Re: "Rust will stop you using data after it's been freed"
The one thing I'd like to point out here. For background, I'm a C++ veteran. C as well, but I switched to C++ as my primary in the mid 1990s. I led moderately large teams of C++ devs - between 15 and 120 - from the mid 2000s through the mid 2010s. I'm that time, I authored and architected everything from concurrent executors to Unicode libraries. I made the jump to Rust in 2018.
Rust protects against a class of errors most articles like this entirely miss: concurrent access memory errors. It also dramatically reduces the criticality of the damage done by novices. The most common novice error is excessive or even logically incorrect cloning - making deep copies rather than correctly solving reference management. Contrast this to the common novice mistakes in Java, go, C, or C++, and you're looking at a much better outcome.
The premise is correct, security is a process and a state of mind. But the worst vulnerability I've ever seen was introduced by a thirty year veteran C programmer with tremendous self assurance, and by all rights the chops to back it up. Except that he hadn't been using threads all that long, and gcc had some very arrogant and opinionated maintainers at the time who insisted on ignoring memory barriers in their optimizations, and a critical bounds check wasn't executed when and in the other he thought it would. How do you reintroduce inspection of asm in critical points of the code? Especially as we move to containerized VMs.