The Dark Arts of Advanced and Unsafe Rust Programming
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Alexis Beingessner a8f62683fb
clarify casts are checked at compile time
8 years ago
.gitignore blurp 8 years ago
LICENSE-APACHE first commit 8 years ago
LICENSE-MIT first commit 8 years ago
README.md nits and realigning 8 years ago
SUMMARY.md clean up vec chapter of tarpl 8 years ago
arc-and-mutex.md nits and realigning 8 years ago
atomics.md nits and realigning 8 years ago
casts.md clarify casts are checked at compile time 8 years ago
checked-uninit.md fixup and cool example for checked-uninit 8 years ago
coercions.md some conversions cleanup 8 years ago
concurrency.md improve joke 8 years ago
constructors.md nits and realigning 8 years ago
conversions.md some conversions cleanup 8 years ago
data.md SHARD ALL THE CHAPTERS 8 years ago
destructors.md fix all the doc tests 8 years ago
dot-operator.md SHARD ALL THE CHAPTERS 8 years ago
drop-flags.md fix all the doc tests 8 years ago
dropck.md shard out misc section on lifetimes properly 8 years ago
exception-safety.md fix all the doc tests 8 years ago
exotic-sizes.md mention void pointers 8 years ago
hrtb.md fix all the doc tests 8 years ago
leaking.md fix all the doc tests 8 years ago
lifetime-elision.md fix all the doc tests 8 years ago
lifetime-mismatch.md SHARD ALL THE CHAPTERS 8 years ago
lifetime-splitting.md shard out misc section on lifetimes properly 8 years ago
lifetimes.md fix up lifetimes 8 years ago
meet-safe-and-unsafe.md rewrite intro 8 years ago
other-reprs.md fixup and cool example for checked-uninit 8 years ago
ownership.md fix all the doc tests 8 years ago
phantom-data.md shard out misc section on lifetimes properly 8 years ago
poisoning.md shard out and clean up unwinding 8 years ago
races.md shard out concurrency 8 years ago
raii.md SHARD ALL THE CHAPTERS 8 years ago
references.md nits and realigning 8 years ago
repr-rust.md clarify casts are checked at compile time 8 years ago
safe-unsafe-meaning.md fix 8 years ago
send-and-sync.md fix all the doc tests 8 years ago
subtyping.md update subtyping to be a bit clearer about reference variance 8 years ago
transmutes.md some conversions cleanup 8 years ago
unbounded-lifetimes.md fix all the doc tests 8 years ago
unchecked-uninit.md fix all the doc tests 8 years ago
uninitialized.md SHARD ALL THE CHAPTERS 8 years ago
unwinding.md shard out and clean up unwinding 8 years ago
vec-alloc.md get into the weeds over GEP and allocations 8 years ago
vec-dealloc.md clean up vec chapter of tarpl 8 years ago
vec-deref.md clean up vec chapter of tarpl 8 years ago
vec-drain.md explain phantom 8 years ago
vec-final.md fix all the doc tests 8 years ago
vec-insert-remove.md clean up vec chapter of tarpl 8 years ago
vec-into-iter.md remove redundant explanation 8 years ago
vec-layout.md get into the weeds over GEP and allocations 8 years ago
vec-push-pop.md fix all the doc tests 8 years ago
vec-raw.md clean up vec chapter of tarpl 8 years ago
vec-zsts.md split out vec-zsts correctly 8 years ago
vec.md get into the weeds over GEP and allocations 8 years ago
working-with-unsafe.md fix all the doc tests 8 years ago

README.md

% The Advanced Rust Programming Language

NOTE: This is a draft document, and may contain serious errors

So you've played around with Rust a bit. You've written a few simple programs and you think you grok the basics. Maybe you've even read through The Rust Programming Language. Now you want to get neck-deep in all the nitty-gritty details of the language. You want to know those weird corner-cases. You want to know what the heck unsafe really means, and how to properly use it. This is the book for you.

To be clear, this book goes into serious detail. We're going to dig into exception-safety and pointer aliasing. We're going to talk about memory models. We're even going to do some type-theory. This is stuff that you absolutely don't need to know to write fast and safe Rust programs. You could probably close this book right now and still have a productive and happy career in Rust.

However if you intend to write unsafe code -- or just really want to dig into the guts of the language -- this book contains invaluable information.

Unlike The Rust Programming Language we will be assuming considerable prior knowledge. In particular, you should be comfortable with:

Due to the nature of advanced Rust programming, we will be spending a lot of time talking about safety and guarantees. In particular, a significant portion of the book will be dedicated to correctly writing and understanding Unsafe Rust.