Here is an in-depth article explaining how rust’s memory safety works. Like, what is it actually protecting and how does it work?
Example of converting C programs to rust over time using TinyVM as the example. Using Cargo to build the C program and then replacing the C functions and structs with rust ones then disabling that part of the C code you can eventually replace the whole C program piece by piece. You can also write tests to ensure that before and after the change the code works the same.