Welcome to an overview of the documentation provided by the Rust project. All of these projects are managed by the Docs Team; there are other unofficial documentation resources as well!
Many of these resources take the form of "books"; we collectively call these "The Rust Bookshelf." Some are large, some are small.
If you'd like to learn Rust, this is the spot for you! All of these resources assume that you have programmed before, but not in any specific language:
Affectionately nicknamed "the book," The Rust Programming Language will give you an overview of the language from first principles. You'll build a few projects along the way, and by the end, you'll have a solid grasp of the language.
If reading multiple hundreds of pages about a language isn't your style, then Rust By Example has you covered. While the book talks about code with a lot of words, RBE shows off a bunch of code, and keeps the talking to a minimum. It also includes exercises!
Once you've gotten familiar with the language, these resources can help you when you're actually using it day-to-day.
Rust's standard library has extensive API documentation, with explanations of how to use various things, as well as example code for accomplishing various tasks.
The Rustc Book describes the Rust compiler,
The Cargo Book is a guide to Cargo, Rust's build tool and dependency manager.
The Rustdoc Book describes our documentation tool,
Many of Rust's errors come with error codes, and you can request extended diagnostics from the compiler on those errors. You can also read them here, if you prefer to read them that way.
Once you're quite familiar with the language, you may find these advanced resources useful.
The Reference is not a formal spec, but is more detailed and comprehensive than the book.
The Rustonomicon is your guidebook to the dark arts of unsafe Rust. It's also sometimes called "the 'nomicon."
The Unstable Book has documentation for unstable features.
rustc Guide documents how
the compiler works and how to contribute to it. This is useful if you want to build
or modify the Rust compiler from source (e.g. to target something non-standard).