If you want to have a language be a &quot;C killer&quot; for secure software you need to put a lot of emphasis on simplicity and portability, which are not strengths of Rust.<p>I think that if you get rid of raw pointers and type casts, you are able to avoid most undefined behavior with dynamic checks: bounds checking, tagged unions, etc. The notable exception is concurrency bugs, which are hard to avoid without a restrictive static analyzer, but I think there is an argument to be made that perhaps the kind of code mr Bernstein wants to write is better off with &quot;boring&quot; sequential algorithms.