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
Taliesin Beynon 8a932e55b9
fix switched-round 'b' and 'c'
8 years ago
.gitignore blurp 8 years ago
LICENSE-APACHE first commit 8 years ago
LICENSE-MIT first commit 8 years ago
README.md frob emphasis 8 years ago
SUMMARY.md fix title-casing 8 years ago
arc-and-mutex.md nits and realigning 8 years ago
atomics.md frob emphasis 8 years ago
borrow-splitting.md frob emphasis 8 years ago
casts.md frob emphasis 8 years ago
checked-uninit.md frob emphasis 8 years ago
coercions.md lots more felix fixes 8 years ago
concurrency.md frob emphasis 8 years ago
constructors.md frob emphasis 8 years ago
conversions.md frob emphasis 8 years ago
data.md frob emphasis 8 years ago
destructors.md frob emphasis 8 years ago
dot-operator.md SHARD ALL THE CHAPTERS 8 years ago
drop-flags.md frob emphasis 8 years ago
dropck.md frob emphasis 8 years ago
exception-safety.md frob emphasis 8 years ago
exotic-sizes.md frob emphasis 8 years ago
hrtb.md frob emphasis 8 years ago
leaking.md frob emphasis 8 years ago
lifetime-elision.md fix all the doc tests 8 years ago
lifetime-mismatch.md frob emphasis 8 years ago
lifetimes.md frob emphasis 8 years ago
meet-safe-and-unsafe.md frob emphasis 8 years ago
obrm.md OBRM for aturon 8 years ago
other-reprs.md many many pnkfelix fixes 8 years ago
ownership.md frob emphasis 8 years ago
phantom-data.md frob emphasis 8 years ago
poisoning.md frob emphasis 8 years ago
races.md last of the emphasis cleanup 8 years ago
references.md add warning about reference section 8 years ago
repr-rust.md fix switched-round 'b' and 'c' 8 years ago
safe-unsafe-meaning.md last of the emphasis cleanup 8 years ago
send-and-sync.md last of the emphasis cleanup 8 years ago
subtyping.md last of the emphasis cleanup 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 borrow-splitting 8 years ago
uninitialized.md SHARD ALL THE CHAPTERS 8 years ago
unwinding.md last of the emphasis cleanup 8 years ago
vec-alloc.md last of the emphasis cleanup 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 last of the emphasis cleanup 8 years ago
vec-final.md fix all the doc tests 8 years ago
vec-insert-remove.md last of the emphasis cleanup 8 years ago
vec-into-iter.md last of the emphasis cleanup 8 years ago
vec-layout.md fix example code 8 years ago
vec-push-pop.md last of the emphasis cleanup 8 years ago
vec-raw.md vec fixes for huonw 8 years ago
vec-zsts.md last of the emphasis cleanup 8 years ago
vec.md vec fixes for huonw 8 years ago
working-with-unsafe.md many many pnkfelix fixes 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 (TRPL). 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 TRPL we will be assuming considerable prior knowledge. In particular, you should be comfortable with basic systems programming and basic Rust. If you don't feel comfortable with these topics, you should consider reading TRPL, though we will not be assuming that you have. You can skip straight to this book if you want; just know that we won't be explaining everything from the ground up.

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.