blob: db61d330f02be0c9e470217f1b61250dbaab2878 [file] [log] [blame] [edit]
<!DOCTYPE HTML>
<html lang="en" class="light" dir="ltr">
<head>
<!-- sidebar iframe generated using mdBook
This is a frame, and not included directly in the page, to control the total size of the
book. The TOC contains an entry for each page, so if each page includes a copy of the TOC,
the total size of the page becomes O(n**2).
The frame is only used as a fallback when JS is turned off. When it's on, the sidebar is
instead added to the main page by `toc.js` instead. The JavaScript mode is better
because, when running in a `file:///` URL, the iframed page would not be Same-Origin as
the rest of the page, so the sidebar and the main page theme would fall out of sync.
-->
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<!-- Custom HTML head -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="css/variables-8adf115d.css">
<link rel="stylesheet" href="css/general-2459343d.css">
<link rel="stylesheet" href="css/chrome-ae938929.css">
<link rel="stylesheet" href="css/print-9e4910d8.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="fonts/fonts-9644e21d.css">
<!-- Custom theme stylesheets -->
</head>
<body class="sidebar-iframe-inner">
<ol class="chapter"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="getting-started.html" target="_parent">Getting Started</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="about-this-guide.html" target="_parent">About this guide</a></span></li><li class="chapter-item "><li class="spacer"></li></li><li class="chapter-item "><li class="part-title">Building and debugging rustc</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/how-to-build-and-run.html" target="_parent"><strong aria-hidden="true">1.</strong> How to build and run the compiler</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/quickstart.html" target="_parent"><strong aria-hidden="true">1.1.</strong> Quickstart</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/prerequisites.html" target="_parent"><strong aria-hidden="true">1.2.</strong> Prerequisites</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/suggested.html" target="_parent"><strong aria-hidden="true">1.3.</strong> Suggested workflows</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/build-install-distribution-artifacts.html" target="_parent"><strong aria-hidden="true">1.4.</strong> Distribution artifacts</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/compiler-documenting.html" target="_parent"><strong aria-hidden="true">1.5.</strong> Building documentation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc.html" target="_parent"><strong aria-hidden="true">1.6.</strong> Rustdoc overview</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/new-target.html" target="_parent"><strong aria-hidden="true">1.7.</strong> Adding a new target</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/optimized-build.html" target="_parent"><strong aria-hidden="true">1.8.</strong> Optimized build</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/intro.html" target="_parent"><strong aria-hidden="true">2.</strong> Testing the compiler</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/running.html" target="_parent"><strong aria-hidden="true">2.1.</strong> Running tests</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/docker.html" target="_parent"><strong aria-hidden="true">2.1.1.</strong> Testing with Docker</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/ci.html" target="_parent"><strong aria-hidden="true">2.1.2.</strong> Testing with CI</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/adding.html" target="_parent"><strong aria-hidden="true">2.2.</strong> Adding new tests</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/best-practices.html" target="_parent"><strong aria-hidden="true">2.3.</strong> Best practices</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/compiletest.html" target="_parent"><strong aria-hidden="true">2.4.</strong> Compiletest</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/ui.html" target="_parent"><strong aria-hidden="true">2.4.1.</strong> UI tests</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/directives.html" target="_parent"><strong aria-hidden="true">2.4.2.</strong> Test directives</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/minicore.html" target="_parent"><strong aria-hidden="true">2.4.3.</strong> Minicore</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/ecosystem.html" target="_parent"><strong aria-hidden="true">2.5.</strong> Ecosystem testing</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/crater.html" target="_parent"><strong aria-hidden="true">2.5.1.</strong> Crater</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/ecosystem-test-jobs/fuchsia.html" target="_parent"><strong aria-hidden="true">2.5.2.</strong> Fuchsia</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/ecosystem-test-jobs/rust-for-linux.html" target="_parent"><strong aria-hidden="true">2.5.3.</strong> Rust for Linux</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/codegen-backend-tests/intro.html" target="_parent"><strong aria-hidden="true">2.6.</strong> Codegen backend testing</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/codegen-backend-tests/cg_clif.html" target="_parent"><strong aria-hidden="true">2.6.1.</strong> Cranelift codegen backend</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/codegen-backend-tests/cg_gcc.html" target="_parent"><strong aria-hidden="true">2.6.2.</strong> GCC codegen backend</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/perf.html" target="_parent"><strong aria-hidden="true">2.7.</strong> Performance testing</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tests/misc.html" target="_parent"><strong aria-hidden="true">2.8.</strong> Misc info</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="compiler-debugging.html" target="_parent"><strong aria-hidden="true">3.</strong> Debugging the compiler</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="tracing.html" target="_parent"><strong aria-hidden="true">3.1.</strong> Using the tracing/logging instrumentation</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="profiling.html" target="_parent"><strong aria-hidden="true">4.</strong> Profiling the compiler</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="profiling/with_perf.html" target="_parent"><strong aria-hidden="true">4.1.</strong> with the linux perf tool</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="profiling/wpa_profiling.html" target="_parent"><strong aria-hidden="true">4.2.</strong> with Windows Performance Analyzer</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="profiling/with_rustc_perf.html" target="_parent"><strong aria-hidden="true">4.3.</strong> with the Rust benchmark suite</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="crates-io.html" target="_parent"><strong aria-hidden="true">5.</strong> crates.io dependencies</a></span></li><li class="chapter-item "><li class="part-title">Contributing to Rust</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="contributing.html" target="_parent"><strong aria-hidden="true">6.</strong> Contribution procedures</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="compiler-team.html" target="_parent"><strong aria-hidden="true">7.</strong> About the compiler team</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="git.html" target="_parent"><strong aria-hidden="true">8.</strong> Using Git</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustbot.html" target="_parent"><strong aria-hidden="true">9.</strong> Mastering @rustbot</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="walkthrough.html" target="_parent"><strong aria-hidden="true">10.</strong> Walkthrough: a typical contribution</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="implementing_new_features.html" target="_parent"><strong aria-hidden="true">11.</strong> Implementing new language features</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="stability-guarantees.html" target="_parent"><strong aria-hidden="true">12.</strong> Stability guarantees</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="stability.html" target="_parent"><strong aria-hidden="true">13.</strong> Stability attributes</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="stabilization_guide.html" target="_parent"><strong aria-hidden="true">14.</strong> Stabilizing language features</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="stabilization_report_template.html" target="_parent"><strong aria-hidden="true">14.1.</strong> Stabilization report template</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="feature-gates.html" target="_parent"><strong aria-hidden="true">15.</strong> Feature Gates</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="conventions.html" target="_parent"><strong aria-hidden="true">16.</strong> Coding conventions</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="bug-fix-procedure.html" target="_parent"><strong aria-hidden="true">17.</strong> Procedures for breaking changes</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="external-repos.html" target="_parent"><strong aria-hidden="true">18.</strong> Using external repositories</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="fuzzing.html" target="_parent"><strong aria-hidden="true">19.</strong> Fuzzing</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/about.html" target="_parent"><strong aria-hidden="true">20.</strong> Notification groups</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/apple.html" target="_parent"><strong aria-hidden="true">20.1.</strong> Apple</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/arm.html" target="_parent"><strong aria-hidden="true">20.2.</strong> ARM</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/emscripten.html" target="_parent"><strong aria-hidden="true">20.3.</strong> Emscripten</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/fuchsia.html" target="_parent"><strong aria-hidden="true">20.4.</strong> Fuchsia</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/loongarch.html" target="_parent"><strong aria-hidden="true">20.5.</strong> LoongArch</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/risc-v.html" target="_parent"><strong aria-hidden="true">20.6.</strong> RISC-V</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/rust-for-linux.html" target="_parent"><strong aria-hidden="true">20.7.</strong> Rust for Linux</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/wasi.html" target="_parent"><strong aria-hidden="true">20.8.</strong> WASI</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/wasm.html" target="_parent"><strong aria-hidden="true">20.9.</strong> WebAssembly</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="notification-groups/windows.html" target="_parent"><strong aria-hidden="true">20.10.</strong> Windows</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="licenses.html" target="_parent"><strong aria-hidden="true">21.</strong> Licenses</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="guides/editions.html" target="_parent"><strong aria-hidden="true">22.</strong> Editions</a></span></li><li class="chapter-item "><li class="part-title">Bootstrapping</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/intro.html" target="_parent"><strong aria-hidden="true">23.</strong> Prologue</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/what-bootstrapping-does.html" target="_parent"><strong aria-hidden="true">24.</strong> What Bootstrapping does</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/how-bootstrap-does-it.html" target="_parent"><strong aria-hidden="true">25.</strong> How Bootstrap does it</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/writing-tools-in-bootstrap.html" target="_parent"><strong aria-hidden="true">26.</strong> Writing tools in Bootstrap</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/debugging-bootstrap.html" target="_parent"><strong aria-hidden="true">27.</strong> Debugging bootstrap</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="building/bootstrapping/bootstrap-in-dependencies.html" target="_parent"><strong aria-hidden="true">28.</strong> cfg(bootstrap) in dependencies</a></span></li><li class="chapter-item "><li class="part-title">High-level Compiler Architecture</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="part-2-intro.html" target="_parent"><strong aria-hidden="true">29.</strong> Prologue</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="overview.html" target="_parent"><strong aria-hidden="true">30.</strong> Overview of the compiler</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="compiler-src.html" target="_parent"><strong aria-hidden="true">31.</strong> The compiler source code</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="query.html" target="_parent"><strong aria-hidden="true">32.</strong> Queries: demand-driven compilation</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="queries/query-evaluation-model-in-detail.html" target="_parent"><strong aria-hidden="true">32.1.</strong> The Query Evaluation Model in detail</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="queries/incremental-compilation.html" target="_parent"><strong aria-hidden="true">32.2.</strong> Incremental compilation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="queries/incremental-compilation-in-detail.html" target="_parent"><strong aria-hidden="true">32.3.</strong> Incremental compilation in detail</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="incrcomp-debugging.html" target="_parent"><strong aria-hidden="true">32.4.</strong> Debugging and testing</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="queries/salsa.html" target="_parent"><strong aria-hidden="true">32.5.</strong> Salsa</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="memory.html" target="_parent"><strong aria-hidden="true">33.</strong> Memory management in rustc</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="serialization.html" target="_parent"><strong aria-hidden="true">34.</strong> Serialization in rustc</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="parallel-rustc.html" target="_parent"><strong aria-hidden="true">35.</strong> Parallel compilation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc-internals.html" target="_parent"><strong aria-hidden="true">36.</strong> Rustdoc internals</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc-internals/search.html" target="_parent"><strong aria-hidden="true">36.1.</strong> Search</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc-internals/rustdoc-test-suite.html" target="_parent"><strong aria-hidden="true">36.2.</strong> The rustdoc test suite</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc-internals/rustdoc-gui-test-suite.html" target="_parent"><strong aria-hidden="true">36.3.</strong> The rustdoc-gui test suite</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustdoc-internals/rustdoc-json-test-suite.html" target="_parent"><strong aria-hidden="true">36.4.</strong> The rustdoc-json test suite</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="offload/internals.html" target="_parent"><strong aria-hidden="true">37.</strong> GPU offload internals</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="offload/installation.html" target="_parent"><strong aria-hidden="true">37.1.</strong> Installation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="offload/usage.html" target="_parent"><strong aria-hidden="true">37.2.</strong> Usage</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="autodiff/internals.html" target="_parent"><strong aria-hidden="true">38.</strong> Autodiff internals</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="autodiff/installation.html" target="_parent"><strong aria-hidden="true">38.1.</strong> Installation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="autodiff/debugging.html" target="_parent"><strong aria-hidden="true">38.2.</strong> How to debug</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="autodiff/flags.html" target="_parent"><strong aria-hidden="true">38.3.</strong> Autodiff flags</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="autodiff/type-trees.html" target="_parent"><strong aria-hidden="true">38.4.</strong> Type Trees</a></span></li></ol><li class="chapter-item "><li class="part-title">Source Code Representation</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="part-3-intro.html" target="_parent"><strong aria-hidden="true">39.</strong> Prologue</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="syntax-intro.html" target="_parent"><strong aria-hidden="true">40.</strong> Syntax and the AST</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="the-parser.html" target="_parent"><strong aria-hidden="true">40.1.</strong> Lexing and parsing</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="macro-expansion.html" target="_parent"><strong aria-hidden="true">40.2.</strong> Macro expansion</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="name-resolution.html" target="_parent"><strong aria-hidden="true">40.3.</strong> Name resolution</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="attributes.html" target="_parent"><strong aria-hidden="true">40.4.</strong> Attributes</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="test-implementation.html" target="_parent"><strong aria-hidden="true">40.5.</strong> #[test] implementation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="panic-implementation.html" target="_parent"><strong aria-hidden="true">40.6.</strong> Panic implementation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ast-validation.html" target="_parent"><strong aria-hidden="true">40.7.</strong> AST validation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="feature-gate-ck.html" target="_parent"><strong aria-hidden="true">40.8.</strong> Feature gate checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="lang-items.html" target="_parent"><strong aria-hidden="true">40.9.</strong> Lang Items</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir.html" target="_parent"><strong aria-hidden="true">41.</strong> The HIR (High-level IR)</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir/lowering.html" target="_parent"><strong aria-hidden="true">41.1.</strong> Lowering AST to HIR</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir/debugging.html" target="_parent"><strong aria-hidden="true">41.2.</strong> Debugging</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ambig-unambig-ty-and-consts.html" target="_parent"><strong aria-hidden="true">42.</strong> Ambig/Unambig Types and Consts</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="thir.html" target="_parent"><strong aria-hidden="true">43.</strong> The THIR (Typed High-level IR)</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/index.html" target="_parent"><strong aria-hidden="true">44.</strong> The MIR (Mid-level IR)</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/construction.html" target="_parent"><strong aria-hidden="true">44.1.</strong> MIR construction</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/visitor.html" target="_parent"><strong aria-hidden="true">44.2.</strong> MIR visitor and traversal</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/passes.html" target="_parent"><strong aria-hidden="true">44.3.</strong> MIR queries and passes: getting the MIR</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="asm.html" target="_parent"><strong aria-hidden="true">45.</strong> Inline assembly</a></span></li><li class="chapter-item "><li class="part-title">Supporting Infrastructure</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="cli.html" target="_parent"><strong aria-hidden="true">46.</strong> Command-line arguments</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustc-driver/intro.html" target="_parent"><strong aria-hidden="true">47.</strong> rustc_driver and rustc_interface</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustc-driver/remarks-on-perma-unstable-features.html" target="_parent"><strong aria-hidden="true">47.1.</strong> Remarks on perma-unstable features</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustc-driver/interacting-with-the-ast.html" target="_parent"><strong aria-hidden="true">47.2.</strong> Example: Type checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="rustc-driver/getting-diagnostics.html" target="_parent"><strong aria-hidden="true">47.3.</strong> Example: Getting diagnostics</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics.html" target="_parent"><strong aria-hidden="true">48.</strong> Errors and lints</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/diagnostic-structs.html" target="_parent"><strong aria-hidden="true">48.1.</strong> Diagnostic and subdiagnostic structs</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/translation.html" target="_parent"><strong aria-hidden="true">48.2.</strong> Translation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/lintstore.html" target="_parent"><strong aria-hidden="true">48.3.</strong> LintStore</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/error-codes.html" target="_parent"><strong aria-hidden="true">48.4.</strong> Error codes</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/diagnostic-items.html" target="_parent"><strong aria-hidden="true">48.5.</strong> Diagnostic items</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="diagnostics/error-guaranteed.html" target="_parent"><strong aria-hidden="true">48.6.</strong> ErrorGuaranteed</a></span></li></ol><li class="chapter-item "><li class="part-title">Analysis</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="part-4-intro.html" target="_parent"><strong aria-hidden="true">49.</strong> Prologue</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="generic_parameters_summary.html" target="_parent"><strong aria-hidden="true">50.</strong> Generic parameter definitions</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty_module/early_binder.html" target="_parent"><strong aria-hidden="true">50.1.</strong> EarlyBinder and instantiating parameters</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty_module/binders.html" target="_parent"><strong aria-hidden="true">51.</strong> Binders and Higher ranked regions</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty_module/instantiating_binders.html" target="_parent"><strong aria-hidden="true">51.1.</strong> Instantiating binders</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="early_late_parameters.html" target="_parent"><strong aria-hidden="true">52.</strong> Early vs Late bound parameters</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty.html" target="_parent"><strong aria-hidden="true">53.</strong> The ty module: representing types</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty_module/generic_arguments.html" target="_parent"><strong aria-hidden="true">53.1.</strong> ADTs and Generic Arguments</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty_module/param_ty_const_regions.html" target="_parent"><strong aria-hidden="true">53.2.</strong> Parameter types/consts/regions</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="ty-fold.html" target="_parent"><strong aria-hidden="true">54.</strong> TypeFolder and TypeFoldable</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="normalization.html" target="_parent"><strong aria-hidden="true">55.</strong> Aliases and Normalization</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="typing_parameter_envs.html" target="_parent"><strong aria-hidden="true">56.</strong> Typing/Param Envs</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="type-inference.html" target="_parent"><strong aria-hidden="true">57.</strong> Type inference</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/resolution.html" target="_parent"><strong aria-hidden="true">58.</strong> Trait solving</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/hrtb.html" target="_parent"><strong aria-hidden="true">58.1.</strong> Higher-ranked trait bounds</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/caching.html" target="_parent"><strong aria-hidden="true">58.2.</strong> Caching subtleties</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/implied-bounds.html" target="_parent"><strong aria-hidden="true">58.3.</strong> Implied bounds</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/specialization.html" target="_parent"><strong aria-hidden="true">58.4.</strong> Specialization</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/chalk.html" target="_parent"><strong aria-hidden="true">58.5.</strong> Chalk-based trait solving</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/lowering-to-logic.html" target="_parent"><strong aria-hidden="true">58.5.1.</strong> Lowering to logic</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/goals-and-clauses.html" target="_parent"><strong aria-hidden="true">58.5.2.</strong> Goals and clauses</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/canonical-queries.html" target="_parent"><strong aria-hidden="true">58.5.3.</strong> Canonical queries</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/canonicalization.html" target="_parent"><strong aria-hidden="true">58.5.4.</strong> Canonicalization</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/trait-solving.html" target="_parent"><strong aria-hidden="true">58.6.</strong> Next-gen trait solving</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/invariants.html" target="_parent"><strong aria-hidden="true">58.6.1.</strong> Invariants of the type system</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/the-solver.html" target="_parent"><strong aria-hidden="true">58.6.2.</strong> The solver</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/candidate-preference.html" target="_parent"><strong aria-hidden="true">58.6.3.</strong> Candidate preference</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/canonicalization.html" target="_parent"><strong aria-hidden="true">58.6.4.</strong> Canonicalization</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/coinduction.html" target="_parent"><strong aria-hidden="true">58.6.5.</strong> Coinduction</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/caching.html" target="_parent"><strong aria-hidden="true">58.6.6.</strong> Caching</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/proof-trees.html" target="_parent"><strong aria-hidden="true">58.6.7.</strong> Proof trees</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/opaque-types.html" target="_parent"><strong aria-hidden="true">58.6.8.</strong> Opaque types</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/significant-changes.html" target="_parent"><strong aria-hidden="true">58.6.9.</strong> Significant changes and quirks</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="solve/sharing-crates-with-rust-analyzer.html" target="_parent"><strong aria-hidden="true">58.6.10.</strong> Sharing the trait solver with rust-analyzer</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="traits/unsize.html" target="_parent"><strong aria-hidden="true">58.7.</strong> Unsize and CoerceUnsized traits</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="variance.html" target="_parent"><strong aria-hidden="true">59.</strong> Variance</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="coherence.html" target="_parent"><strong aria-hidden="true">60.</strong> Coherence checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir-typeck/summary.html" target="_parent"><strong aria-hidden="true">61.</strong> HIR Type checking</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir-typeck/coercions.html" target="_parent"><strong aria-hidden="true">61.1.</strong> Coercions</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="hir-typeck/method-lookup.html" target="_parent"><strong aria-hidden="true">61.2.</strong> Method lookup</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="const-generics.html" target="_parent"><strong aria-hidden="true">62.</strong> Const Generics</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="opaque-types-type-alias-impl-trait.html" target="_parent"><strong aria-hidden="true">63.</strong> Opaque types</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="opaque-types-impl-trait-inference.html" target="_parent"><strong aria-hidden="true">63.1.</strong> Inference details</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="return-position-impl-trait-in-trait.html" target="_parent"><strong aria-hidden="true">63.2.</strong> Return Position Impl Trait In Trait</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/opaque-types-region-inference-restrictions.html" target="_parent"><strong aria-hidden="true">63.3.</strong> Region inference restrictions</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="effects.html" target="_parent"><strong aria-hidden="true">64.</strong> Const condition checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="pat-exhaustive-checking.html" target="_parent"><strong aria-hidden="true">65.</strong> Pattern and exhaustiveness checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="unsafety-checking.html" target="_parent"><strong aria-hidden="true">66.</strong> Unsafety checking</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/dataflow.html" target="_parent"><strong aria-hidden="true">67.</strong> MIR dataflow</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/drop-elaboration.html" target="_parent"><strong aria-hidden="true">68.</strong> Drop elaboration</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check.html" target="_parent"><strong aria-hidden="true">69.</strong> The borrow checker</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/moves_and_initialization.html" target="_parent"><strong aria-hidden="true">69.1.</strong> Tracking moves and initialization</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/moves_and_initialization/move_paths.html" target="_parent"><strong aria-hidden="true">69.1.1.</strong> Move paths</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/type_check.html" target="_parent"><strong aria-hidden="true">69.2.</strong> MIR type checker</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/drop_check.html" target="_parent"><strong aria-hidden="true">69.3.</strong> Drop check</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference.html" target="_parent"><strong aria-hidden="true">69.4.</strong> Region inference</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/constraint_propagation.html" target="_parent"><strong aria-hidden="true">69.4.1.</strong> Constraint propagation</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/lifetime_parameters.html" target="_parent"><strong aria-hidden="true">69.4.2.</strong> Lifetime parameters</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/member_constraints.html" target="_parent"><strong aria-hidden="true">69.4.3.</strong> Member constraints</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/placeholders_and_universes.html" target="_parent"><strong aria-hidden="true">69.4.4.</strong> Placeholders and universes</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/closure_constraints.html" target="_parent"><strong aria-hidden="true">69.4.5.</strong> Closure constraints</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/region_inference/error_reporting.html" target="_parent"><strong aria-hidden="true">69.4.6.</strong> Error reporting</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="borrow_check/two_phase_borrows.html" target="_parent"><strong aria-hidden="true">69.5.</strong> Two-phase-borrows</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="closure.html" target="_parent"><strong aria-hidden="true">70.</strong> Closure capture inference</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="coroutine-closures.html" target="_parent"><strong aria-hidden="true">71.</strong> Async closures/&quot;coroutine-closures&quot;</a></span></li><li class="chapter-item "><li class="part-title">MIR to binaries</li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="part-5-intro.html" target="_parent"><strong aria-hidden="true">72.</strong> Prologue</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/optimizations.html" target="_parent"><strong aria-hidden="true">73.</strong> MIR optimizations</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="mir/debugging.html" target="_parent"><strong aria-hidden="true">74.</strong> Debugging MIR</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="const-eval.html" target="_parent"><strong aria-hidden="true">75.</strong> Constant evaluation</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="const-eval/interpret.html" target="_parent"><strong aria-hidden="true">75.1.</strong> Interpreter</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/monomorph.html" target="_parent"><strong aria-hidden="true">76.</strong> Monomorphization</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/lowering-mir.html" target="_parent"><strong aria-hidden="true">77.</strong> Lowering MIR</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/codegen.html" target="_parent"><strong aria-hidden="true">78.</strong> Code generation</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/updating-llvm.html" target="_parent"><strong aria-hidden="true">78.1.</strong> Updating LLVM</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/debugging.html" target="_parent"><strong aria-hidden="true">78.2.</strong> Debugging LLVM</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/backend-agnostic.html" target="_parent"><strong aria-hidden="true">78.3.</strong> Backend Agnostic Codegen</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/implicit-caller-location.html" target="_parent"><strong aria-hidden="true">78.4.</strong> Implicit caller location</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/intro.html" target="_parent"><strong aria-hidden="true">79.</strong> Debug Info</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/rust-codegen.html" target="_parent"><strong aria-hidden="true">79.1.</strong> Rust Codegen</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/llvm-codegen.html" target="_parent"><strong aria-hidden="true">79.2.</strong> LLVM Codegen</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/debugger-internals.html" target="_parent"><strong aria-hidden="true">79.3.</strong> Debugger Internals</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/lldb-internals.html" target="_parent"><strong aria-hidden="true">79.3.1.</strong> LLDB Internals</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/gdb-internals.html" target="_parent"><strong aria-hidden="true">79.3.2.</strong> GDB Internals</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/debugger-visualizers.html" target="_parent"><strong aria-hidden="true">79.4.</strong> Debugger Visualizers</a><a class="chapter-fold-toggle"><div></div></a></span><ol class="section"><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/lldb-visualizers.html" target="_parent"><strong aria-hidden="true">79.4.1.</strong> LLDB - Python Providers</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/gdb-visualizers.html" target="_parent"><strong aria-hidden="true">79.4.2.</strong> GDB - Python Providers</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/natvis-visualizers.html" target="_parent"><strong aria-hidden="true">79.4.3.</strong> CDB - Natvis</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debuginfo/testing.html" target="_parent"><strong aria-hidden="true">79.5.</strong> Testing</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="debugging-support-in-rustc.html" target="_parent"><strong aria-hidden="true">79.6.</strong> (Lecture Notes) Debugging support in the Rust compiler</a></span></li></ol><li class="chapter-item "><span class="chapter-link-wrapper"><a href="backend/libs-and-metadata.html" target="_parent"><strong aria-hidden="true">80.</strong> Libraries and metadata</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="profile-guided-optimization.html" target="_parent"><strong aria-hidden="true">81.</strong> Profile-guided optimization</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="llvm-coverage-instrumentation.html" target="_parent"><strong aria-hidden="true">82.</strong> LLVM source-based code coverage</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="sanitizers.html" target="_parent"><strong aria-hidden="true">83.</strong> Sanitizers support</a></span></li><li class="chapter-item "><li class="spacer"></li></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/background.html" target="_parent">Appendix A: Background topics</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/glossary.html" target="_parent">Appendix B: Glossary</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/code-index.html" target="_parent">Appendix C: Code Index</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/compiler-lecture.html" target="_parent">Appendix D: Compiler Lecture Series</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/bibliography.html" target="_parent">Appendix E: Bibliography</a></span></li><li class="chapter-item "><span class="chapter-link-wrapper"><a href="appendix/humorust.html" target="_parent">Appendix Z: HumorRust</a></span></li><li class="chapter-item "><li class="spacer"></li></li></ol>
</body>
</html>