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.
nomicon/src
Alex Crichton 56d90fa3c3
Touch up where `Alloc` is imported from
7 years ago
..
img Add @aldeka's safe and unsafe Ferris 8 years ago
README.md Port Nomicon to mdbook 8 years ago
SUMMARY.md rewrite references.md, splitting it out into aliasing.md 8 years ago
aliasing.md rewrite references.md, splitting it out into aliasing.md 8 years ago
arc-and-mutex.md Port Nomicon to mdbook 8 years ago
atomics.md fix typo 8 years ago
borrow-splitting.md Port Nomicon to mdbook 8 years ago
casts.md Port Nomicon to mdbook 8 years ago
chapter_1.md Re-implement rustbook in terms of mdbook 8 years ago
checked-uninit.md Port Nomicon to mdbook 8 years ago
coercions.md Port Nomicon to mdbook 8 years ago
concurrency.md Port Nomicon to mdbook 8 years ago
constructors.md Port Nomicon to mdbook 8 years ago
conversions.md Port Nomicon to mdbook 8 years ago
data.md Port Nomicon to mdbook 8 years ago
destructors.md Touch up where `Alloc` is imported from 7 years ago
dot-operator.md Port Nomicon to mdbook 8 years ago
drop-flags.md Remove obsolete documentation about drop-flags 8 years ago
dropck.md Port Nomicon to mdbook 8 years ago
exception-safety.md Update exception-safety.md 8 years ago
exotic-sizes.md Port Nomicon to mdbook 8 years ago
ffi.md Fixing link to Drop trait and catch_unwind; closes rust-lang/rust#42064 8 years ago
hrtb.md Port Nomicon to mdbook 8 years ago
leaking.md Port Nomicon to mdbook 8 years ago
lifetime-elision.md Replace occurrences of `uint` with `usize` 8 years ago
lifetime-mismatch.md Revert "Fix up links" 8 years ago
lifetimes.md Port Nomicon to mdbook 8 years ago
meet-safe-and-unsafe.md Add @aldeka's safe and unsafe Ferris 8 years ago
obrm.md Port Nomicon to mdbook 8 years ago
other-reprs.md Merge pull request #13 from geofft/null 8 years ago
ownership.md Port Nomicon to mdbook 8 years ago
phantom-data.md Add Gankro's table to nomicon/src/phantom-data.md 8 years ago
poisoning.md Port Nomicon to mdbook 8 years ago
races.md Port Nomicon to mdbook 8 years ago
references.md rewrite references.md, splitting it out into aliasing.md 8 years ago
repr-rust.md Fixes formatting. 8 years ago
safe-unsafe-meaning.md Port Nomicon to mdbook 8 years ago
send-and-sync.md rewording 8 years ago
subtyping.md subtyping: clarify the concreteness of 'a in example 8 years ago
transmutes.md Port Nomicon to mdbook 8 years ago
unbounded-lifetimes.md Port Nomicon to mdbook 8 years ago
unchecked-uninit.md Port Nomicon to mdbook 8 years ago
uninitialized.md Port Nomicon to mdbook 8 years ago
unwinding.md Port Nomicon to mdbook 8 years ago
vec-alloc.md use new Unique/heap APIs 8 years ago
vec-dealloc.md use new Unique/heap APIs 8 years ago
vec-deref.md use new Unique/heap APIs 8 years ago
vec-drain.md Port Nomicon to mdbook 8 years ago
vec-final.md Touch up where `Alloc` is imported from 7 years ago
vec-insert-remove.md Port Nomicon to mdbook 8 years ago
vec-into-iter.md use new Unique/heap APIs 8 years ago
vec-layout.md remove spurious ?Sized bound 8 years ago
vec-push-pop.md Port Nomicon to mdbook 8 years ago
vec-raw.md use new Unique/heap APIs 8 years ago
vec-zsts.md use new Unique/heap APIs 8 years ago
vec.md Port Nomicon to mdbook 8 years ago
working-with-unsafe.md Port Nomicon to mdbook 8 years ago

README.md

The Rustonomicon

The Dark Arts of Advanced and Unsafe Rust Programming

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

Instead of the programs I had hoped for, there came only a shuddering blackness and ineffable loneliness; and I saw at last a fearful truth which no one had ever dared to breathe before — the unwhisperable secret of secrets — The fact that this language of stone and stridor is not a sentient perpetuation of Rust as London is of Old London and Paris of Old Paris, but that it is in fact quite unsafe, its sprawling body imperfectly embalmed and infested with queer animate things which have nothing to do with it as it was in compilation.

This book digs into all the awful details that are necessary to understand in order to write correct Unsafe Rust programs. Due to the nature of this problem, it may lead to unleashing untold horrors that shatter your psyche into a billion infinitesimal fragments of despair.

Should you wish a long and happy career of writing Rust programs, you should turn back now and forget you ever saw this book. It is not necessary. However if you intend to write unsafe code -- or just want to dig into the guts of the language -- this book contains invaluable information.

Unlike The Book we will be assuming considerable prior knowledge. In particular, you should be comfortable with basic systems programming and Rust. If you don't feel comfortable with these topics, you should consider reading The Book first. Though we will not be assuming that you have, and will take care to occasionally give a refresher on the basics where appropriate. You can skip straight to this book if you want; just know that we won't be explaining everything from the ground up.

To be clear, this book goes into deep detail. We're going to dig into exception-safety, pointer aliasing, memory models, and even some type-theory. We will also be spending a lot of time talking about the different kinds of safety and guarantees.