Go to file
Alexis Beingessner c7919f2d98 remove chaff
2015-07-13 23:13:56 -07:00
.gitignore blurp 2015-06-08 09:57:05 -07:00
arc-and-mutex.md new chapter for reals 2015-07-07 21:30:14 -07:00
atomics.md clarify atomics 2015-07-13 17:49:58 -07:00
casts.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
checked-uninit.md split out and rework drop flags section 2015-07-07 09:33:20 -07:00
coercions.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
concurrency.md improve joke 2015-07-07 10:03:51 -07:00
constructors.md expand on ctors 2015-07-06 20:25:14 -07:00
conversions.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
data.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
destructors.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
dot-operator.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
drop-flags.md split out and rework drop flags section 2015-07-07 09:33:20 -07:00
exception-safety.md shard out and clean up unwinding 2015-07-13 22:09:44 -07:00
exotic-sizes.md void types 2015-07-07 09:39:21 -07:00
hrtb.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
leaking.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
lifetime-elision.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
lifetime-misc.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
lifetime-mismatch.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
lifetimes.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
meet-safe-and-unsafe.md rewrite intro 2015-07-13 11:12:16 -07:00
other-reprs.md remove salsh 2015-07-13 22:37:03 -07:00
ownership.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
poisoning.md shard out and clean up unwinding 2015-07-13 22:09:44 -07:00
races.md shard out concurrency 2015-07-07 09:48:57 -07:00
raii.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
README.md rewrite intro 2015-07-13 11:12:16 -07:00
references.md fix definition 2015-07-13 21:37:19 -07:00
repr-rust.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
safe-unsafe-meaning.md fix 2015-07-13 11:46:57 -07:00
send-and-sync.md shard out concurrency 2015-07-07 09:48:57 -07:00
subtyping.md cleanup 2015-07-06 23:37:44 -07:00
SUMMARY.md shard out and clean up unwinding 2015-07-13 22:09:44 -07:00
transmutes.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
unbounded-lifetimes.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
unchecked-uninit.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
uninitialized.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
unwinding.md shard out and clean up unwinding 2015-07-13 22:09:44 -07:00
vec-alloc.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-dealloc.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-deref.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-drain.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-final.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-insert-remove.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-into-iter.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-layout.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec-push-pop.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
vec.md SHARD ALL THE CHAPTERS 2015-07-06 18:36:16 -07:00
working-with-unsafe.md fix definition 2015-07-13 21:37:19 -07:00

% 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.