Rust has features that are not directly related to memory safety, but introduce paradigmatic and ergonomic improvements that help writing correct logic more often. Features like sum types (powerful enums) and type classes (traits, how generics are implemented) quickly come to mind. Hygienic macros and procedural macros are also very powerful features.
Sometimes the two aspects (language feature and memory safety) come together. For example, the Send and Sync traits is the part of the type system that contributes to implementing thread safety.
So it's not all just about (im)mutability, lifetimes, and the borrow checker, the directly relevant safety features.
Also, the tooling and the ecosystem are factors the value of which can not be understated.