# reference **Repository Path**: mirrors_rust-lang/reference ## Basic Information - **Project Name**: reference - **Description**: The Rust Reference - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # The Rust Language Reference This document is the primary reference for the Rust programming language. ## Contributor docs There are several pages for those working on the reference: * [Authoring guide](https://github.com/rust-lang/reference/blob/master/docs/authoring.md): Guidelines for writing content. * [Review policy](https://github.com/rust-lang/reference/blob/master/docs/review-policy.md): Guidelines for reviewers. * [Grammar](https://github.com/rust-lang/reference/blob/master/docs/grammar.md): How the grammar syntax works. * [Attribute template](https://github.com/rust-lang/reference/blob/master/docs/attribute-template.md): The standard template for documenting an attribute. ## Building To build the Reference, first clone the project: ```sh git clone https://github.com/rust-lang/reference.git cd reference ``` (Alternatively, if you don't want to use `git`, [download][] a ZIP file of the project, extract it using your preferred tool, and rename the top-level directory to `reference`.) [download]: https://github.com/rust-lang/reference/archive/refs/heads/master.zip ### 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 in order to run the tests: ```sh rustup toolchain install nightly rustup override set nightly ``` Now, ensure you have `mdbook` installed, as this is needed in order to build the Reference: ```sh cargo install --locked mdbook ``` [mdbook]: https://rust-lang.github.io/mdBook/ ### Running mdbook `mdbook` provides a variety of different commands and options to help you work on the book: * `mdbook build --open`: Build the book and open it in a web browser. * `mdbook serve --open`: Launches a web server on localhost. It also automatically rebuilds the book whenever any file changes and automatically reloads your web browser. The book contents are driven by a `SUMMARY.md` file, and every file must be linked there. See for its usage. ### `SPEC_RELATIVE` The `SPEC_RELATIVE=0` environment variable makes links to the standard library go to instead of being relative, which is useful when viewing locally since you normally don't have a copy of the standard library. ```sh SPEC_RELATIVE=0 mdbook serve --open ``` The published site at (or local docs using `rustup doc`) does not set this, which means it will use relative links which supports offline viewing and links to the correct version (for example, links in will stay within the 1.81.0 directory). ### `SPEC_DENY_WARNINGS` The `SPEC_DENY_WARNINGS=1` environment variable will turn all warnings generated by `mdbook-spec` to errors. This is used in CI to ensure that there aren't any problems with the book content. ### `SPEC_RUST_ROOT` The `SPEC_RUST_ROOT` can be used to point to the directory of a checkout of . This is used by the test-linking feature so that it can find tests linked to reference rules. If this is not set, then the tests won't be linked. ## Running tests There are several different kinds of tests you can run (these are enforced on CI): * `mdbook test`: This will run the inline Rust codeblocks (internally it uses `rustdoc` to do this). * `cargo xtask style-check`: This will validate some style checks (see [authoring guide](docs/authoring.md)). * `cargo xtask linkcheck`: This will validate that markdown links aren't broken. * `cargo xtask test-all`: Runs all tests. ## How is this published? The process for getting the reference content into a [Rust release](https://doc.rust-lang.org/reference/#rust-releases) and on the website is: 1. Changes are merged to this repository. 2. [Triagebot](https://forge.rust-lang.org/triagebot/doc-updates.html) will automatically synchronize this repository to [rust-lang/rust]. This happens every other week. The reference is tracked in [rust-lang/rust] as a [submodule](https://github.com/rust-lang/rust/tree/master/src/doc). - This will open a PR on [rust-lang/rust] which needs to be merged, and that can take up to several days. 3. At midnight UTC, whatever is on the default branch of [rust-lang/rust] will be a part of that nightly release, and will be published after a few hours to . 4. Following Rust's [release process](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html), every 6 weeks, nightly will be promoted to beta (), and then 6 weeks after that it will be promoted to stable (). [rust-lang/rust]: https://github.com/rust-lang/rust/