The Rust compiler categorizes “unsafe Rust” into 13 different operations via UnsafeOpKind, but the Rust documentation only introduces five “unsafe superpowers” and says:
“The unsafe keyword only gives you access to these five features that are then not checked by the compiler for memory safety.”
Some of those operations are newer than the book and the book could use updating to acknowledge them (like inline assembly). Some are still unstable (like unsafe fields) — they aren’t properly part of the language yet.
Based on an old PR,[1]InitializingTypeWith would be something like assigning null to a NonNull, and similarly for the constrained fields -- like, imagine the u8 of a NonZeroU8 was a public field and you tried to ref mut bind it in a pattern. At a guess, such things aren't exposed on stable Rust so far?
the text has since moved elsewhere, for translation purposes perhaps ↩︎