# The Rust Programming Language ![Build Status](https://github.com/rust-lang/book/workflows/CI/badge.svg) This repository contains the source of "The Rust Programming Language" book. [The book is available in dead-tree form from No Starch Press][nostarch]. [nostarch]: https://nostarch.com/rust You can also read the book for free online. Please see the book as shipped with the latest [stable], [beta], or [nightly] Rust releases. Be aware that issues in those versions may have been fixed in this repository already, as those releases are updated less frequently. [stable]: https://doc.rust-lang.org/stable/book/ [beta]: https://doc.rust-lang.org/beta/book/ [nightly]: https://doc.rust-lang.org/nightly/book/ See the [releases] to download just the code of all the code listings that appear in the book. [releases]: https://github.com/rust-lang/book/releases ## Requirements Building the book requires [mdBook], ideally the same version that rust-lang/rust uses in [this file][rust-mdbook]. To get it: [mdBook]: https://github.com/rust-lang-nursery/mdBook [rust-mdbook]: https://github.com/rust-lang/rust/blob/master/src/tools/rustbook/Cargo.toml ```bash $ cargo install mdbook --vers [version-num] ``` ## Building To build the book, type: ```bash $ mdbook build ``` The output will be in the `book` subdirectory. To check it out, open it in your web browser. _Firefox:_ ```bash $ firefox book/index.html # Linux $ open -a "Firefox" book/index.html # OS X $ Start-Process "firefox.exe" .\book\index.html # Windows (PowerShell) $ start firefox.exe .\book\index.html # Windows (Cmd) ``` _Chrome:_ ```bash $ google-chrome book/index.html # Linux $ open -a "Google Chrome" book/index.html # OS X $ Start-Process "chrome.exe" .\book\index.html # Windows (PowerShell) $ start chrome.exe .\book\index.html # Windows (Cmd) ``` To run the tests: ```bash $ mdbook test ``` ## Contributing We'd love your help! Please see [CONTRIBUTING.md][contrib] to learn about the kinds of contributions we're looking for. [contrib]: https://github.com/rust-lang/book/blob/master/CONTRIBUTING.md ### Translations We'd love help translating the book! See the [Translations] label to join in efforts that are currently in progress. Open a new issue to start working on a new language! We're waiting on [mdbook support] for multiple languages before we merge any in, but feel free to start! [Translations]: https://github.com/rust-lang/book/issues?q=is%3Aopen+is%3Aissue+label%3ATranslations [mdbook support]: https://github.com/rust-lang-nursery/mdBook/issues/5 ## Spellchecking To scan source files for spelling errors, you can use the `spellcheck.sh` script. It needs a dictionary of valid words, which is provided in `dictionary.txt`. If the script produces a false positive (say, you used word `BTreeMap` which the script considers invalid), you need to add this word to `dictionary.txt` (keep the sorted order for consistency).