In order to achieve this, it imposes a type system so strict that it needs an escape hatch (the "unsafe" keyword) just to be able to make the claim that you can write real code in it. Rust's guarantees do not apply to code in "unsafe" blocks.
But if you use unsafe too much, Rust has a cancel culture that will come down on you for it.
And if you don't use unsafe, you end up having to create convoluted code with insane type declarations just to conform to the Rust way of doing things, which is often radically different from normal code because the type and borrow checkers close off so many code patterns.
In order to achieve this, it imposes a type system so strict that it needs an escape hatch (the "unsafe" keyword) just to be able to make the claim that you can write real code in it.
But if you use unsafe too much, Rust has a cancel culture that will come down on you for it.