First let me say - I'm old. Heck your parents are probably my age. And when I started there were over 50 popular compilers. I learned Fortran and APL, I had a go at Cobol. And there were lots and lots of others.
But Linux was written in 'C', and that held great sway except in the scientific community. Then C++ added complex numbers (and a bunch of other stuff that were not important) and we were all happy.
But Rust is a new one on me.
The problem with the VL53L1s are their complexity. It's not one or two registers you have to twiddle, but thousands. When the chip was invented we put in so many registers so we could adjust the sensor because we didn't really know the answer. And we used c-code to converge on the right settings. Publishing the register map of hundreds and hundreds of registers would just cause you to run away. I suppose you could do it, but in then end you would hate ST.
Over time we converged on a solid core of settings, and developed the VL53L1X Ultra Lite Driver. It's only a few hundred lines of the most simplistic code we could develop. No structures were allowed. Nothing that was not plainly obvious.
If I were going to try to use the VL53L1X, I'd start with the STSW-IMG009
VL53L1X ULD API (Ultra Lite Driver Application Programming Interface)
and I'd convert it.
It's so fundamental, with a little luck, it's a matter of syntax.
If you don't use the STM32, the only inventing you will have to do will be the hardware interface where the functions have to communicate with the I2C.
- Consider C2Rust. The C2Rust project is developing a tool that translates C to semantically equivalent Rust. There is an online demo of it working here.
Might give that a shot.