Focusing on Rust &quot;unsafe&quot; as some sort of way to ding its safety drives me crazy.<p>&quot;unsafe&quot; blocks in Rust is designed to be just like the compiler backend. We could have built things like Vec::new and vector indexing into the code generator, like Go or Java did. Then we wouldn&#x27;t need the &quot;unsafe&quot; construct in the language (except to interface with kernel32.dll and&#x2F;or syscalls). But that would make our lives harder <i>for absolutely no extra safety gain</i>. It&#x27;s precisely the same thing as implementing things in the compiler backend, but it&#x27;s <i>safer</i> than doing that, because we get to write code in a stronger type system than that of raw LLVM.<p>More succinctly: What makes the compiler backend safe while unsafe blocks are not? Can you name one thing that makes the compiler backend safer than code written in unsafe blocks?