Given that in unsafe block you still have to uphold the same invariants as in
other blocks of code, your job is actually much harder in Rust that it is in
C/C++.
Take a look at examples in [0], they would be perfectly valid in C/C++, but are
potentially considered undefined behaviour in Rust.