Placing emphasis on correctness sounds like a plus. How does Rust do this? Does it only apply to memory management? For added performance I could live without gc, but I still prefer it.
Rust encodes object lifetime into its type system, and enforces constraints on how references are used through the borrow checker. With Rust, you don't need a GC. Object lifetimes (not just memory!) are automatically managed through static lifetime analysis. Time and CPU spent in a tracing GC is simply lost, it's emitted as waste heat. In Rust you can reclaim some of that back, and still use a programming style very similar to a GC'd language.
Remember: static beats dynamic, every time. Time spent checking assertions at compile time pays for itself many times over in time spent debugging these same issues at run time. Just as static typing is a huge win over dynamic typing, static lifetime analysis (Rust memory semantics) is a huge win over dynamic lifetime analysis (GC).
I think it's probably rarely the case that static analysis beats GC, and this "static beats dynamic" rule probably doesn't generalize as well as you think it does.
Remember: static beats dynamic, every time. Time spent checking assertions at compile time pays for itself many times over in time spent debugging these same issues at run time. Just as static typing is a huge win over dynamic typing, static lifetime analysis (Rust memory semantics) is a huge win over dynamic lifetime analysis (GC).