The thing is that even with unique_ptr I can easily reach in via get() and I've broken the shared mutable state contract. It's trivial for me to trace what modifies things in Rust, I just follow the 'mut' annotations and since only one thing can hold it at a time it's very straightforward.
Rust also has one the best package managers I've seen. Union types which are the best way to represent states and state machines bar none. An iterator class that's the best I've seen(seriously has anyone actually used <algorithm>? How man begin/end pairs do I need?).
Plus the community is super-welcoming, there's more reasons but those are my top ones right now.
Who said it does? And why would it have to?
It'a just about catching those "certain class of errors that the Rust compiler will check that will still give you a segfault in C++".
Plus a nicer looking language, with a more modern design.
There will always be that compiler or team that doesn't have any kind of reviews, static analysis, making use of binary libraries or legacy code.
Hence why safety at language level is much better than third party tooling, as tools can be ignored.