Building the Reference
Checking out the source
To build the Reference, first clone the project:
git clone https://github.com/rust-lang/reference.git
cd reference
Installing mdbook
The Reference is built using mdbook.
First, ensure that you have a recent copy of the nightly Rust compiler installed, as this is needed to run the tests:
rustup toolchain install nightly
rustup override set nightly
Now, ensure you have mdbook installed, as this is needed to build the Reference:
cargo install --locked mdbook
Running mdbook
mdbook provides several commands and options to help you work on the book:
mdbook build --open: Builds the book and opens it in a web browser.mdbook serve --open: Launches a web server on localhost. It automatically rebuilds the book whenever any file changes and reloads your web browser.
The book contents are driven by a SUMMARY.md file, and every file must be linked there. See https://rust-lang.github.io/mdBook/ for more information.
SPEC_RELATIVE
The SPEC_RELATIVE=0 environment variable makes links to the standard library go to https://doc.rust-lang.org/ instead of being relative. This is useful when viewing locally since you normally don’t have a copy of the standard library.
SPEC_RELATIVE=0 mdbook serve --open
The published site at https://doc.rust-lang.org/reference/ (or local docs using rustup doc) does not set this, which means it uses relative links. This supports offline viewing and links to the correct version (for example, links in https://doc.rust-lang.org/1.81.0/reference/ will stay within the 1.81.0 directory).
SPEC_DENY_WARNINGS
The SPEC_DENY_WARNINGS=1 environment variable turns all warnings generated by mdbook-spec into errors. This is used in CI to ensure that there aren’t any problems with the book content.
SPEC_DENY_WARNINGS=1 mdbook serve --open
SPEC_RUST_ROOT
The SPEC_RUST_ROOT environment variable can be used to point to the directory of a checkout of https://github.com/rust-lang/rust. This is used by the test-linking feature so that it can find tests linked to Reference rules. If this is not set, the tests won’t be linked.
SPEC_RUST_ROOT=/path/to/rust mdbook serve --open