Summary Introduction Meet Safe and Unsafe How Safe and Unsafe Interact What Unsafe Can Do Working with Unsafe Data Layout repr(Rust) Exotically Sized Types Other reprs Ownership References Aliasing Lifetimes Limits of Lifetimes Lifetime Elision Unbounded Lifetimes Higher-Rank Trait Bounds Subtyping and Variance Drop Check PhantomData Splitting Borrows Type Conversions Coercions The Dot Operator Casts Transmutes Uninitialized Memory Checked Drop Flags Unchecked Ownership Based Resource Management Constructors Destructors Leaking Unwinding Exception Safety Poisoning Concurrency Races Send and Sync Atomics Implementing Vec Layout Allocating Push and Pop Deallocating Deref Insert and Remove IntoIter RawVec Drain Handling Zero-Sized Types Final Code Implementing Arc and Mutex FFI Beneath std #[panic_handler]