

Yes, but the tools provided by Rust:
- Prevent most common ones via aliasing^mutability, Send and Sync marker traits, etc.
- Require explicitly marking the cases not handled by this, e.g. unsafe features require an
unsafe {}block to be used.


Yes, but the tools provided by Rust:
unsafe {} block to be used.

…which is why I love #[rustfmt::skip] so much! You can do stuff like
#[rustfmt::skip]
const DIRECTIONS: [[i8; 2]; 4] = [
[0, 1],
[-1, 0], [1, 0],
[0, -1],
]
while still enjoying the convenience of auto formatting elsewhere.
Although linters which act on the behavior of code are unequivocally a good thing, e.g. “hey, this comparison will always return false you probably made a mistake here”.


People (such as myself) make the argument that it does a better job because it’s focused more on reading code than writing it since you don’t start in the “write” mode like in most editors.
I would say the choice of text editor shouldn’t make a difference in productivity so long as it doesn’t actively get in your way too often (looking at you, poorly implemented autopairs) and it supports the relevant LSP and debugging protocols.
Just saying…
:%s/\s*—/,/g