Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Rust Compiler Development Guide

book.toml

[book]
title = "Rust Compiler Development Guide"
authors = ["The Rust Project Developers"]
description = "A guide to developing the Rust compiler (rustc)"

[build]
create-missing = false

[preprocessor.mermaid]
command = "mdbook-mermaid"

[output.html]
git-repository-url = "https://github.com/rust-lang/rustc-dev-guide"
edit-url-template = "https://github.com/rust-lang/rustc-dev-guide/edit/main/{path}"
additional-js = [
  "mermaid.min.js",
  "mermaid-init.js",
]

[output.html.search]
use-boolean-and = true

[output.html.fold]
enable = true
level = 0

[output.linkcheck]
command = "ci/linkcheck.sh"
follow-web-links = true
exclude = [
    "crates\\.io",
    "gcc\\.godbolt\\.org",
    "youtube\\.com",
    "youtu\\.be",
    "dl\\.acm\\.org",
    "cs\\.bgu\\.ac\\.il",
    "www\\.amazon\\.com",
    "www\\.rustaceans\\.org",
    "play\\.rust-lang\\.org",
    "tomlee\\.co",
    "marketplace\\.visualstudio\\.com",
    "objects\\.githubusercontent\\.com",
    # The bug listing URL works only if an user is logged in, otherwise one gets 404.
    "github\\.com/issues\\?q=.*",
    # Similarly 500 is sometimes returned here.
    "github\\.com/rust-lang/rust/pulls\\?q=.*",
    # 401 is returned here for unknown reason
    "github\\.com/wesleywiser/rustc-bootstrap-wpa-analysis",
    # Handle: connection closed before message completed
    "microsoft\\.com/en-us/research/publication/",
    # 500 is returned for HEAD request
    "code\\.visualstudio\\.com/docs/editor/tasks",
]
# The scheduled CI runs every day and so we need to reuse a part of the cache
# in order to face "Server returned 429 Too Many Requests" errors for github.com.
cache-timeout = 90000
warning-policy = "error"

[output.html.redirect]
"/borrow_check.html" = "borrow-check.html"
"/borrow_check/drop_check.html" = "/borrow-check/drop-check.html"
"/borrow_check/moves_and_initialization.html" = "/borrow-check/moves-and-initialization.html"
"/borrow_check/moves_and_initialization/move_paths.html" = "/borrow-check/moves-and-initialization/move-paths.html"
"/borrow_check/opaque-types-region-inference-restrictions.html" = "/borrow-check/opaque-types-region-inference-restrictions.html"
"/borrow_check/region_inference.html" = "/borrow-check/region-inference.html"
"/borrow_check/region_inference/closure_constraints.html" = "/borrow-check/region-inference/closure-constraints.html"
"/borrow_check/region_inference/constraint_propagation.html" = "/borrow-check/region-inference/constraint-propagation.html"
"/borrow_check/region_inference/error_reporting.html" = "/borrow-check/region-inference/error-reporting.html"
"/borrow_check/region_inference/lifetime_parameters.html" = "/borrow-check/region-inference/lifetime-parameters.html"
"/borrow_check/region_inference/member_constraints.html" = "/borrow-check/region-inference/member-constraints.html"
"/borrow_check/region_inference/placeholders_and_universes.html" = "/borrow-check/region-inference/placeholders-and-universes.html"
"/borrow_check/two_phase_borrows.html" = "/borrow-check/two-phase-borrows.html"
"/borrow_check/type_check.html" = "/borrow-check/type-check.html"
"/compiletest.html" = "tests/compiletest.html"
"/diagnostics/diagnostic-codes.html" = "error-codes.html"
"/diagnostics/sessiondiagnostic.html" = "diagnostic-structs.html"
"/early_late_parameters.html" = "early-late-parameters.html"
"/generic_parameters_summary.html" = "generic-parameters-summary.html"
"/implementing_new_features.html" = "implementing-new-features.html"
"/miri.html" = "const-eval/interpret.html"
"/profiling/with_perf.html" = "with-perf.html"
"/profiling/with_rustc_perf.html" = "with-rustc-perf.html"
"/profiling/wpa_profiling.html" = "wpa-profiling.html"
"/stabilization_guide.html" = "stabilization-guide.html"
"/stabilization_report_template.html" = "stabilization-report-template.html"
"/tests/fuchsia.html" = "ecosystem-test-jobs/fuchsia.html"
"/tests/headers.html" = "directives.html"
"/tests/integration.html" = "ecosystem.html"
"/tests/rust-for-linux.html" = "ecosystem-test-jobs/rust-for-linux.html"
"/ty_module/binders.html" = "/ty-module/binders.html"
"/ty_module/early_binder.html" = "/ty-module/early-binder.html"
"/ty_module/generic_arguments.html" = "/ty-module/generic-arguments.html"
"/ty_module/instantiating_binders.html" = "/ty-module/instantiating-binders.html"
"/ty_module/param_ty_const_regions.html" = "/ty-module/param-ty-const-regions.html"
"/typing_parameter_envs.html" = "typing-parameter-envs.html"