Earlier quoted context omitted.
While I mostly agree with you, I'd like to play devil's advocate: The Rust core team is relatively relaxed about the community's usage of `unsafe`. I say this because they do not seem to be interested in actively discouraging it's usage. i.e. `unsafe` is discouraged in documentation, not via tools. "Hey please don't use `unsafe` unless you know what you're doing". Is like writing a comment in Javascript, `function(x…
> Ideally, the usage of `unsafe` should be discouraged by the compiler via friction. This is enforced via tools: you have to say 'unsafe' to use something unsafe. That's the speed bump. In addition, there's a lint that you can on to fail the build if you use `unsafe`. This won't apply to your dependencies, but you can make it apply to your code.
1. Crate discoverability could be improved.
2. He wanted full control of the abstraction.
3. This particular library is just an experiment.
4. ...
Regardless of the reason, the reality is the same, `unsafe` could have been ignored but wasn't. Instead, the path of least resistance was to re-write `unsafe` blocks. IMO, it is not truly "friction"/discouraged if it is also the path of least resistance.