You can use non-standard extensions with C++ today to cover some of what Rust does, like -Wlifetime in C++ for something roughly equivalent to Rust's compile-time borrow checker. UBSan/ASan lets you enforce address and undefined behavior with runtime checks, it's useful and easy to use, but it has a big performance impact so you normally turn it off in production code.
Google Carbon seems promising, but it deviates enough from C++ that it feels like yet another language. But theoretically you will be able to have a project that has a mix of C++ and Carbon and it should Just Work(tm).
Ada / SPARK is an alternative to must of what Rust offers, it's a wildly different approach and not a 1:1 equivalent. But you can make reliable software and even do some formal verification and static analysis on it. It's easier to deal with violation messages from the Ada compiler than with Rust. But it's also a lot more work to put all the contracts and declarations in place (you need multiple files just to make a module, so it's a very different workflow compared to C/C++/Rust).