blob: 2c83f3dfc856fc7c6dedaa7908f1f21676ce8689 [file] [log] [blame]
<!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.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Custom theme stylesheets -->
</head>
<body class="sidebar-iframe-inner">
<ol class="chapter"><li class="chapter-item affix "><a href="getting-started.html" target="_parent">Getting Started</a></li><li class="chapter-item affix "><a href="about-this-guide.html" target="_parent">About this guide</a></li><li class="chapter-item affix "><li class="spacer"></li><li class="chapter-item affix "><li class="part-title">Building and debugging rustc</li><li class="chapter-item "><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="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="building/quickstart.html" target="_parent"><strong aria-hidden="true">1.1.</strong> Quickstart</a></li><li class="chapter-item "><a href="building/prerequisites.html" target="_parent"><strong aria-hidden="true">1.2.</strong> Prerequisites</a></li><li class="chapter-item "><a href="building/suggested.html" target="_parent"><strong aria-hidden="true">1.3.</strong> Suggested workflows</a></li><li class="chapter-item "><a href="building/build-install-distribution-artifacts.html" target="_parent"><strong aria-hidden="true">1.4.</strong> Distribution artifacts</a></li><li class="chapter-item "><a href="building/compiler-documenting.html" target="_parent"><strong aria-hidden="true">1.5.</strong> Building documentation</a></li><li class="chapter-item "><a href="rustdoc.html" target="_parent"><strong aria-hidden="true">1.6.</strong> Rustdoc overview</a></li><li class="chapter-item "><a href="building/new-target.html" target="_parent"><strong aria-hidden="true">1.7.</strong> Adding a new target</a></li><li class="chapter-item "><a href="building/optimized-build.html" target="_parent"><strong aria-hidden="true">1.8.</strong> Optimized build</a></li></ol></li><li class="chapter-item "><a href="tests/intro.html" target="_parent"><strong aria-hidden="true">2.</strong> Testing the compiler</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tests/running.html" target="_parent"><strong aria-hidden="true">2.1.</strong> Running tests</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tests/docker.html" target="_parent"><strong aria-hidden="true">2.1.1.</strong> Testing with Docker</a></li><li class="chapter-item "><a href="tests/ci.html" target="_parent"><strong aria-hidden="true">2.1.2.</strong> Testing with CI</a></li></ol></li><li class="chapter-item "><a href="tests/adding.html" target="_parent"><strong aria-hidden="true">2.2.</strong> Adding new tests</a></li><li class="chapter-item "><a href="tests/best-practices.html" target="_parent"><strong aria-hidden="true">2.3.</strong> Best practices</a></li><li class="chapter-item "><a href="tests/compiletest.html" target="_parent"><strong aria-hidden="true">2.4.</strong> Compiletest</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tests/ui.html" target="_parent"><strong aria-hidden="true">2.4.1.</strong> UI tests</a></li><li class="chapter-item "><a href="tests/directives.html" target="_parent"><strong aria-hidden="true">2.4.2.</strong> Test directives</a></li><li class="chapter-item "><a href="tests/minicore.html" target="_parent"><strong aria-hidden="true">2.4.3.</strong> Minicore</a></li></ol></li><li class="chapter-item "><a href="tests/ecosystem.html" target="_parent"><strong aria-hidden="true">2.5.</strong> Ecosystem testing</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tests/crater.html" target="_parent"><strong aria-hidden="true">2.5.1.</strong> Crater</a></li><li class="chapter-item "><a href="tests/ecosystem-test-jobs/fuchsia.html" target="_parent"><strong aria-hidden="true">2.5.2.</strong> Fuchsia</a></li><li class="chapter-item "><a href="tests/ecosystem-test-jobs/rust-for-linux.html" target="_parent"><strong aria-hidden="true">2.5.3.</strong> Rust for Linux</a></li></ol></li><li class="chapter-item "><a href="tests/codegen-backend-tests/intro.html" target="_parent"><strong aria-hidden="true">2.6.</strong> Codegen backend testing</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tests/codegen-backend-tests/cg_clif.html" target="_parent"><strong aria-hidden="true">2.6.1.</strong> Cranelift codegen backend</a></li><li class="chapter-item "><a href="tests/codegen-backend-tests/cg_gcc.html" target="_parent"><strong aria-hidden="true">2.6.2.</strong> GCC codegen backend</a></li></ol></li><li class="chapter-item "><a href="tests/perf.html" target="_parent"><strong aria-hidden="true">2.7.</strong> Performance testing</a></li><li class="chapter-item "><a href="tests/suggest-tests.html" target="_parent"><strong aria-hidden="true">2.8.</strong> Suggest tests tool</a></li><li class="chapter-item "><a href="tests/misc.html" target="_parent"><strong aria-hidden="true">2.9.</strong> Misc info</a></li></ol></li><li class="chapter-item "><a href="compiler-debugging.html" target="_parent"><strong aria-hidden="true">3.</strong> Debugging the compiler</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="tracing.html" target="_parent"><strong aria-hidden="true">3.1.</strong> Using the tracing/logging instrumentation</a></li></ol></li><li class="chapter-item "><a href="profiling.html" target="_parent"><strong aria-hidden="true">4.</strong> Profiling the compiler</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="profiling/with_perf.html" target="_parent"><strong aria-hidden="true">4.1.</strong> with the linux perf tool</a></li><li class="chapter-item "><a href="profiling/wpa_profiling.html" target="_parent"><strong aria-hidden="true">4.2.</strong> with Windows Performance Analyzer</a></li><li class="chapter-item "><a href="profiling/with_rustc_perf.html" target="_parent"><strong aria-hidden="true">4.3.</strong> with the Rust benchmark suite</a></li></ol></li><li class="chapter-item "><a href="crates-io.html" target="_parent"><strong aria-hidden="true">5.</strong> crates.io dependencies</a></li><li class="chapter-item affix "><li class="part-title">Contributing to Rust</li><li class="chapter-item "><a href="contributing.html" target="_parent"><strong aria-hidden="true">6.</strong> Contribution procedures</a></li><li class="chapter-item "><a href="compiler-team.html" target="_parent"><strong aria-hidden="true">7.</strong> About the compiler team</a></li><li class="chapter-item "><a href="git.html" target="_parent"><strong aria-hidden="true">8.</strong> Using Git</a></li><li class="chapter-item "><a href="rustbot.html" target="_parent"><strong aria-hidden="true">9.</strong> Mastering @rustbot</a></li><li class="chapter-item "><a href="walkthrough.html" target="_parent"><strong aria-hidden="true">10.</strong> Walkthrough: a typical contribution</a></li><li class="chapter-item "><a href="implementing_new_features.html" target="_parent"><strong aria-hidden="true">11.</strong> Implementing new language features</a></li><li class="chapter-item "><a href="stability.html" target="_parent"><strong aria-hidden="true">12.</strong> Stability attributes</a></li><li class="chapter-item "><a href="stabilization_guide.html" target="_parent"><strong aria-hidden="true">13.</strong> Stabilizing Features</a></li><li class="chapter-item "><a href="feature-gates.html" target="_parent"><strong aria-hidden="true">14.</strong> Feature Gates</a></li><li class="chapter-item "><a href="conventions.html" target="_parent"><strong aria-hidden="true">15.</strong> Coding conventions</a></li><li class="chapter-item "><a href="bug-fix-procedure.html" target="_parent"><strong aria-hidden="true">16.</strong> Procedures for breaking changes</a></li><li class="chapter-item "><a href="external-repos.html" target="_parent"><strong aria-hidden="true">17.</strong> Using external repositories</a></li><li class="chapter-item "><a href="fuzzing.html" target="_parent"><strong aria-hidden="true">18.</strong> Fuzzing</a></li><li class="chapter-item "><a href="notification-groups/about.html" target="_parent"><strong aria-hidden="true">19.</strong> Notification groups</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="notification-groups/apple.html" target="_parent"><strong aria-hidden="true">19.1.</strong> Apple</a></li><li class="chapter-item "><a href="notification-groups/arm.html" target="_parent"><strong aria-hidden="true">19.2.</strong> ARM</a></li><li class="chapter-item "><a href="notification-groups/emscripten.html" target="_parent"><strong aria-hidden="true">19.3.</strong> Emscripten</a></li><li class="chapter-item "><a href="notification-groups/fuchsia.html" target="_parent"><strong aria-hidden="true">19.4.</strong> Fuchsia</a></li><li class="chapter-item "><a href="notification-groups/risc-v.html" target="_parent"><strong aria-hidden="true">19.5.</strong> RISC-V</a></li><li class="chapter-item "><a href="notification-groups/rust-for-linux.html" target="_parent"><strong aria-hidden="true">19.6.</strong> Rust for Linux</a></li><li class="chapter-item "><a href="notification-groups/wasi.html" target="_parent"><strong aria-hidden="true">19.7.</strong> WASI</a></li><li class="chapter-item "><a href="notification-groups/wasm.html" target="_parent"><strong aria-hidden="true">19.8.</strong> WebAssembly</a></li><li class="chapter-item "><a href="notification-groups/windows.html" target="_parent"><strong aria-hidden="true">19.9.</strong> Windows</a></li></ol></li><li class="chapter-item "><a href="licenses.html" target="_parent"><strong aria-hidden="true">20.</strong> Licenses</a></li><li class="chapter-item "><a href="guides/editions.html" target="_parent"><strong aria-hidden="true">21.</strong> Editions</a></li><li class="chapter-item affix "><li class="part-title">Bootstrapping</li><li class="chapter-item "><a href="building/bootstrapping/intro.html" target="_parent"><strong aria-hidden="true">22.</strong> Prologue</a></li><li class="chapter-item "><a href="building/bootstrapping/what-bootstrapping-does.html" target="_parent"><strong aria-hidden="true">23.</strong> What Bootstrapping does</a></li><li class="chapter-item "><a href="building/bootstrapping/how-bootstrap-does-it.html" target="_parent"><strong aria-hidden="true">24.</strong> How Bootstrap does it</a></li><li class="chapter-item "><a href="building/bootstrapping/writing-tools-in-bootstrap.html" target="_parent"><strong aria-hidden="true">25.</strong> Writing tools in Bootstrap</a></li><li class="chapter-item "><a href="building/bootstrapping/debugging-bootstrap.html" target="_parent"><strong aria-hidden="true">26.</strong> Debugging bootstrap</a></li><li class="chapter-item "><a href="building/bootstrapping/bootstrap-in-dependencies.html" target="_parent"><strong aria-hidden="true">27.</strong> cfg(bootstrap) in dependencies</a></li><li class="chapter-item affix "><li class="part-title">High-level Compiler Architecture</li><li class="chapter-item "><a href="part-2-intro.html" target="_parent"><strong aria-hidden="true">28.</strong> Prologue</a></li><li class="chapter-item "><a href="overview.html" target="_parent"><strong aria-hidden="true">29.</strong> Overview of the compiler</a></li><li class="chapter-item "><a href="compiler-src.html" target="_parent"><strong aria-hidden="true">30.</strong> The compiler source code</a></li><li class="chapter-item "><a href="query.html" target="_parent"><strong aria-hidden="true">31.</strong> Queries: demand-driven compilation</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="queries/query-evaluation-model-in-detail.html" target="_parent"><strong aria-hidden="true">31.1.</strong> The Query Evaluation Model in detail</a></li><li class="chapter-item "><a href="queries/incremental-compilation.html" target="_parent"><strong aria-hidden="true">31.2.</strong> Incremental compilation</a></li><li class="chapter-item "><a href="queries/incremental-compilation-in-detail.html" target="_parent"><strong aria-hidden="true">31.3.</strong> Incremental compilation in detail</a></li><li class="chapter-item "><a href="incrcomp-debugging.html" target="_parent"><strong aria-hidden="true">31.4.</strong> Debugging and testing</a></li><li class="chapter-item "><a href="queries/salsa.html" target="_parent"><strong aria-hidden="true">31.5.</strong> Salsa</a></li></ol></li><li class="chapter-item "><a href="memory.html" target="_parent"><strong aria-hidden="true">32.</strong> Memory management in rustc</a></li><li class="chapter-item "><a href="serialization.html" target="_parent"><strong aria-hidden="true">33.</strong> Serialization in rustc</a></li><li class="chapter-item "><a href="parallel-rustc.html" target="_parent"><strong aria-hidden="true">34.</strong> Parallel compilation</a></li><li class="chapter-item "><a href="rustdoc-internals.html" target="_parent"><strong aria-hidden="true">35.</strong> Rustdoc internals</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="rustdoc-internals/search.html" target="_parent"><strong aria-hidden="true">35.1.</strong> Search</a></li><li class="chapter-item "><a href="rustdoc-internals/rustdoc-test-suite.html" target="_parent"><strong aria-hidden="true">35.2.</strong> The rustdoc test suite</a></li><li class="chapter-item "><a href="rustdoc-internals/rustdoc-gui-test-suite.html" target="_parent"><strong aria-hidden="true">35.3.</strong> The rustdoc-gui test suite</a></li><li class="chapter-item "><a href="rustdoc-internals/rustdoc-json-test-suite.html" target="_parent"><strong aria-hidden="true">35.4.</strong> The rustdoc-json test suite</a></li></ol></li><li class="chapter-item "><a href="offload/internals.html" target="_parent"><strong aria-hidden="true">36.</strong> GPU offload internals</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="offload/installation.html" target="_parent"><strong aria-hidden="true">36.1.</strong> Installation</a></li></ol></li><li class="chapter-item "><a href="autodiff/internals.html" target="_parent"><strong aria-hidden="true">37.</strong> Autodiff internals</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="autodiff/installation.html" target="_parent"><strong aria-hidden="true">37.1.</strong> Installation</a></li><li class="chapter-item "><a href="autodiff/debugging.html" target="_parent"><strong aria-hidden="true">37.2.</strong> How to debug</a></li><li class="chapter-item "><a href="autodiff/flags.html" target="_parent"><strong aria-hidden="true">37.3.</strong> Autodiff flags</a></li><li class="chapter-item "><a href="autodiff/limitations.html" target="_parent"><strong aria-hidden="true">37.4.</strong> Current limitations</a></li></ol></li><li class="chapter-item "><li class="part-title">Source Code Representation</li><li class="chapter-item "><a href="part-3-intro.html" target="_parent"><strong aria-hidden="true">38.</strong> Prologue</a></li><li class="chapter-item "><a href="syntax-intro.html" target="_parent"><strong aria-hidden="true">39.</strong> Syntax and the AST</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="the-parser.html" target="_parent"><strong aria-hidden="true">39.1.</strong> Lexing and parsing</a></li><li class="chapter-item "><a href="macro-expansion.html" target="_parent"><strong aria-hidden="true">39.2.</strong> Macro expansion</a></li><li class="chapter-item "><a href="name-resolution.html" target="_parent"><strong aria-hidden="true">39.3.</strong> Name resolution</a></li><li class="chapter-item "><a href="attributes.html" target="_parent"><strong aria-hidden="true">39.4.</strong> Attributes</a></li><li class="chapter-item "><a href="test-implementation.html" target="_parent"><strong aria-hidden="true">39.5.</strong> #[test] implementation</a></li><li class="chapter-item "><a href="panic-implementation.html" target="_parent"><strong aria-hidden="true">39.6.</strong> Panic implementation</a></li><li class="chapter-item "><a href="ast-validation.html" target="_parent"><strong aria-hidden="true">39.7.</strong> AST validation</a></li><li class="chapter-item "><a href="feature-gate-ck.html" target="_parent"><strong aria-hidden="true">39.8.</strong> Feature gate checking</a></li><li class="chapter-item "><a href="lang-items.html" target="_parent"><strong aria-hidden="true">39.9.</strong> Lang Items</a></li></ol></li><li class="chapter-item "><a href="hir.html" target="_parent"><strong aria-hidden="true">40.</strong> The HIR (High-level IR)</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="hir/lowering.html" target="_parent"><strong aria-hidden="true">40.1.</strong> Lowering AST to HIR</a></li><li class="chapter-item "><a href="hir/ambig-unambig-ty-and-consts.html" target="_parent"><strong aria-hidden="true">40.2.</strong> Ambig/Unambig Types and Consts</a></li><li class="chapter-item "><a href="hir/debugging.html" target="_parent"><strong aria-hidden="true">40.3.</strong> Debugging</a></li></ol></li><li class="chapter-item "><a href="thir.html" target="_parent"><strong aria-hidden="true">41.</strong> The THIR (Typed High-level IR)</a></li><li class="chapter-item "><a href="mir/index.html" target="_parent"><strong aria-hidden="true">42.</strong> The MIR (Mid-level IR)</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="mir/construction.html" target="_parent"><strong aria-hidden="true">42.1.</strong> MIR construction</a></li><li class="chapter-item "><a href="mir/visitor.html" target="_parent"><strong aria-hidden="true">42.2.</strong> MIR visitor and traversal</a></li><li class="chapter-item "><a href="mir/passes.html" target="_parent"><strong aria-hidden="true">42.3.</strong> MIR queries and passes: getting the MIR</a></li></ol></li><li class="chapter-item "><a href="asm.html" target="_parent"><strong aria-hidden="true">43.</strong> Inline assembly</a></li><li class="chapter-item affix "><li class="part-title">Supporting Infrastructure</li><li class="chapter-item "><a href="cli.html" target="_parent"><strong aria-hidden="true">44.</strong> Command-line arguments</a></li><li class="chapter-item "><a href="rustc-driver/intro.html" target="_parent"><strong aria-hidden="true">45.</strong> rustc_driver and rustc_interface</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="rustc-driver/remarks-on-perma-unstable-features.html" target="_parent"><strong aria-hidden="true">45.1.</strong> Remarks on perma-unstable features</a></li><li class="chapter-item "><a href="rustc-driver/interacting-with-the-ast.html" target="_parent"><strong aria-hidden="true">45.2.</strong> Example: Type checking</a></li><li class="chapter-item "><a href="rustc-driver/getting-diagnostics.html" target="_parent"><strong aria-hidden="true">45.3.</strong> Example: Getting diagnostics</a></li></ol></li><li class="chapter-item "><a href="diagnostics.html" target="_parent"><strong aria-hidden="true">46.</strong> Errors and lints</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="diagnostics/diagnostic-structs.html" target="_parent"><strong aria-hidden="true">46.1.</strong> Diagnostic and subdiagnostic structs</a></li><li class="chapter-item "><a href="diagnostics/translation.html" target="_parent"><strong aria-hidden="true">46.2.</strong> Translation</a></li><li class="chapter-item "><a href="diagnostics/lintstore.html" target="_parent"><strong aria-hidden="true">46.3.</strong> LintStore</a></li><li class="chapter-item "><a href="diagnostics/error-codes.html" target="_parent"><strong aria-hidden="true">46.4.</strong> Error codes</a></li><li class="chapter-item "><a href="diagnostics/diagnostic-items.html" target="_parent"><strong aria-hidden="true">46.5.</strong> Diagnostic items</a></li><li class="chapter-item "><a href="diagnostics/error-guaranteed.html" target="_parent"><strong aria-hidden="true">46.6.</strong> ErrorGuaranteed</a></li></ol></li><li class="chapter-item "><li class="part-title">Analysis</li><li class="chapter-item "><a href="part-4-intro.html" target="_parent"><strong aria-hidden="true">47.</strong> Prologue</a></li><li class="chapter-item "><a href="generic_parameters_summary.html" target="_parent"><strong aria-hidden="true">48.</strong> Generic parameter definitions</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="ty_module/early_binder.html" target="_parent"><strong aria-hidden="true">48.1.</strong> EarlyBinder and instantiating parameters</a></li></ol></li><li class="chapter-item "><a href="ty_module/binders.html" target="_parent"><strong aria-hidden="true">49.</strong> Binders and Higher ranked regions</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="ty_module/instantiating_binders.html" target="_parent"><strong aria-hidden="true">49.1.</strong> Instantiating binders</a></li></ol></li><li class="chapter-item "><a href="early_late_parameters.html" target="_parent"><strong aria-hidden="true">50.</strong> Early vs Late bound parameters</a></li><li class="chapter-item "><a href="ty.html" target="_parent"><strong aria-hidden="true">51.</strong> The ty module: representing types</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="ty_module/generic_arguments.html" target="_parent"><strong aria-hidden="true">51.1.</strong> ADTs and Generic Arguments</a></li><li class="chapter-item "><a href="ty_module/param_ty_const_regions.html" target="_parent"><strong aria-hidden="true">51.2.</strong> Parameter types/consts/regions</a></li></ol></li><li class="chapter-item "><a href="ty-fold.html" target="_parent"><strong aria-hidden="true">52.</strong> TypeFolder and TypeFoldable</a></li><li class="chapter-item "><a href="normalization.html" target="_parent"><strong aria-hidden="true">53.</strong> Aliases and Normalization</a></li><li class="chapter-item "><a href="typing_parameter_envs.html" target="_parent"><strong aria-hidden="true">54.</strong> Typing/Param Envs</a></li><li class="chapter-item "><a href="type-inference.html" target="_parent"><strong aria-hidden="true">55.</strong> Type inference</a></li><li class="chapter-item "><a href="traits/resolution.html" target="_parent"><strong aria-hidden="true">56.</strong> Trait solving</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="traits/hrtb.html" target="_parent"><strong aria-hidden="true">56.1.</strong> Higher-ranked trait bounds</a></li><li class="chapter-item "><a href="traits/caching.html" target="_parent"><strong aria-hidden="true">56.2.</strong> Caching subtleties</a></li><li class="chapter-item "><a href="traits/implied-bounds.html" target="_parent"><strong aria-hidden="true">56.3.</strong> Implied bounds</a></li><li class="chapter-item "><a href="traits/specialization.html" target="_parent"><strong aria-hidden="true">56.4.</strong> Specialization</a></li><li class="chapter-item "><a href="traits/chalk.html" target="_parent"><strong aria-hidden="true">56.5.</strong> Chalk-based trait solving</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="traits/lowering-to-logic.html" target="_parent"><strong aria-hidden="true">56.5.1.</strong> Lowering to logic</a></li><li class="chapter-item "><a href="traits/goals-and-clauses.html" target="_parent"><strong aria-hidden="true">56.5.2.</strong> Goals and clauses</a></li><li class="chapter-item "><a href="traits/canonical-queries.html" target="_parent"><strong aria-hidden="true">56.5.3.</strong> Canonical queries</a></li><li class="chapter-item "><a href="traits/canonicalization.html" target="_parent"><strong aria-hidden="true">56.5.4.</strong> Canonicalization</a></li></ol></li><li class="chapter-item "><a href="solve/trait-solving.html" target="_parent"><strong aria-hidden="true">56.6.</strong> Next-gen trait solving</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="solve/invariants.html" target="_parent"><strong aria-hidden="true">56.6.1.</strong> Invariants of the type system</a></li><li class="chapter-item "><a href="solve/the-solver.html" target="_parent"><strong aria-hidden="true">56.6.2.</strong> The solver</a></li><li class="chapter-item "><a href="solve/canonicalization.html" target="_parent"><strong aria-hidden="true">56.6.3.</strong> Canonicalization</a></li><li class="chapter-item "><a href="solve/coinduction.html" target="_parent"><strong aria-hidden="true">56.6.4.</strong> Coinduction</a></li><li class="chapter-item "><a href="solve/caching.html" target="_parent"><strong aria-hidden="true">56.6.5.</strong> Caching</a></li><li class="chapter-item "><a href="solve/proof-trees.html" target="_parent"><strong aria-hidden="true">56.6.6.</strong> Proof trees</a></li><li class="chapter-item "><a href="solve/opaque-types.html" target="_parent"><strong aria-hidden="true">56.6.7.</strong> Opaque types</a></li><li class="chapter-item "><a href="solve/significant-changes.html" target="_parent"><strong aria-hidden="true">56.6.8.</strong> Significant changes and quirks</a></li></ol></li><li class="chapter-item "><a href="traits/unsize.html" target="_parent"><strong aria-hidden="true">56.7.</strong> Unsize and CoerceUnsized traits</a></li></ol></li><li class="chapter-item "><a href="type-checking.html" target="_parent"><strong aria-hidden="true">57.</strong> Type checking</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="method-lookup.html" target="_parent"><strong aria-hidden="true">57.1.</strong> Method lookup</a></li><li class="chapter-item "><a href="variance.html" target="_parent"><strong aria-hidden="true">57.2.</strong> Variance</a></li><li class="chapter-item "><a href="coherence.html" target="_parent"><strong aria-hidden="true">57.3.</strong> Coherence checking</a></li><li class="chapter-item "><a href="opaque-types-type-alias-impl-trait.html" target="_parent"><strong aria-hidden="true">57.4.</strong> Opaque types</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="opaque-types-impl-trait-inference.html" target="_parent"><strong aria-hidden="true">57.4.1.</strong> Inference details</a></li><li class="chapter-item "><a href="return-position-impl-trait-in-trait.html" target="_parent"><strong aria-hidden="true">57.4.2.</strong> Return Position Impl Trait In Trait</a></li><li class="chapter-item "><a href="borrow_check/opaque-types-region-inference-restrictions.html" target="_parent"><strong aria-hidden="true">57.4.3.</strong> Region inference restrictions</a></li></ol></li></ol></li><li class="chapter-item "><a href="effects.html" target="_parent"><strong aria-hidden="true">58.</strong> Const condition checking</a></li><li class="chapter-item "><a href="pat-exhaustive-checking.html" target="_parent"><strong aria-hidden="true">59.</strong> Pattern and exhaustiveness checking</a></li><li class="chapter-item "><a href="unsafety-checking.html" target="_parent"><strong aria-hidden="true">60.</strong> Unsafety checking</a></li><li class="chapter-item "><a href="mir/dataflow.html" target="_parent"><strong aria-hidden="true">61.</strong> MIR dataflow</a></li><li class="chapter-item "><a href="mir/drop-elaboration.html" target="_parent"><strong aria-hidden="true">62.</strong> Drop elaboration</a></li><li class="chapter-item "><a href="borrow_check.html" target="_parent"><strong aria-hidden="true">63.</strong> The borrow checker</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="borrow_check/moves_and_initialization.html" target="_parent"><strong aria-hidden="true">63.1.</strong> Tracking moves and initialization</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="borrow_check/moves_and_initialization/move_paths.html" target="_parent"><strong aria-hidden="true">63.1.1.</strong> Move paths</a></li></ol></li><li class="chapter-item "><a href="borrow_check/type_check.html" target="_parent"><strong aria-hidden="true">63.2.</strong> MIR type checker</a></li><li class="chapter-item "><a href="borrow_check/drop_check.html" target="_parent"><strong aria-hidden="true">63.3.</strong> Drop check</a></li><li class="chapter-item "><a href="borrow_check/region_inference.html" target="_parent"><strong aria-hidden="true">63.4.</strong> Region inference</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="borrow_check/region_inference/constraint_propagation.html" target="_parent"><strong aria-hidden="true">63.4.1.</strong> Constraint propagation</a></li><li class="chapter-item "><a href="borrow_check/region_inference/lifetime_parameters.html" target="_parent"><strong aria-hidden="true">63.4.2.</strong> Lifetime parameters</a></li><li class="chapter-item "><a href="borrow_check/region_inference/member_constraints.html" target="_parent"><strong aria-hidden="true">63.4.3.</strong> Member constraints</a></li><li class="chapter-item "><a href="borrow_check/region_inference/placeholders_and_universes.html" target="_parent"><strong aria-hidden="true">63.4.4.</strong> Placeholders and universes</a></li><li class="chapter-item "><a href="borrow_check/region_inference/closure_constraints.html" target="_parent"><strong aria-hidden="true">63.4.5.</strong> Closure constraints</a></li><li class="chapter-item "><a href="borrow_check/region_inference/error_reporting.html" target="_parent"><strong aria-hidden="true">63.4.6.</strong> Error reporting</a></li></ol></li><li class="chapter-item "><a href="borrow_check/two_phase_borrows.html" target="_parent"><strong aria-hidden="true">63.5.</strong> Two-phase-borrows</a></li></ol></li><li class="chapter-item "><a href="closure.html" target="_parent"><strong aria-hidden="true">64.</strong> Closure capture inference</a></li><li class="chapter-item "><a href="coroutine-closures.html" target="_parent"><strong aria-hidden="true">65.</strong> Async closures/&quot;coroutine-closures&quot;</a></li><li class="chapter-item affix "><li class="part-title">MIR to binaries</li><li class="chapter-item "><a href="part-5-intro.html" target="_parent"><strong aria-hidden="true">66.</strong> Prologue</a></li><li class="chapter-item "><a href="mir/optimizations.html" target="_parent"><strong aria-hidden="true">67.</strong> MIR optimizations</a></li><li class="chapter-item "><a href="mir/debugging.html" target="_parent"><strong aria-hidden="true">68.</strong> Debugging MIR</a></li><li class="chapter-item "><a href="const-eval.html" target="_parent"><strong aria-hidden="true">69.</strong> Constant evaluation</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="const-eval/interpret.html" target="_parent"><strong aria-hidden="true">69.1.</strong> Interpreter</a></li></ol></li><li class="chapter-item "><a href="backend/monomorph.html" target="_parent"><strong aria-hidden="true">70.</strong> Monomorphization</a></li><li class="chapter-item "><a href="backend/lowering-mir.html" target="_parent"><strong aria-hidden="true">71.</strong> Lowering MIR</a></li><li class="chapter-item "><a href="backend/codegen.html" target="_parent"><strong aria-hidden="true">72.</strong> Code generation</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="backend/updating-llvm.html" target="_parent"><strong aria-hidden="true">72.1.</strong> Updating LLVM</a></li><li class="chapter-item "><a href="backend/debugging.html" target="_parent"><strong aria-hidden="true">72.2.</strong> Debugging LLVM</a></li><li class="chapter-item "><a href="backend/backend-agnostic.html" target="_parent"><strong aria-hidden="true">72.3.</strong> Backend Agnostic Codegen</a></li><li class="chapter-item "><a href="backend/implicit-caller-location.html" target="_parent"><strong aria-hidden="true">72.4.</strong> Implicit caller location</a></li></ol></li><li class="chapter-item "><a href="backend/libs-and-metadata.html" target="_parent"><strong aria-hidden="true">73.</strong> Libraries and metadata</a></li><li class="chapter-item "><a href="profile-guided-optimization.html" target="_parent"><strong aria-hidden="true">74.</strong> Profile-guided optimization</a></li><li class="chapter-item "><a href="llvm-coverage-instrumentation.html" target="_parent"><strong aria-hidden="true">75.</strong> LLVM source-based code coverage</a></li><li class="chapter-item "><a href="sanitizers.html" target="_parent"><strong aria-hidden="true">76.</strong> Sanitizers support</a></li><li class="chapter-item "><a href="debugging-support-in-rustc.html" target="_parent"><strong aria-hidden="true">77.</strong> Debugging support in the Rust compiler</a></li><li class="chapter-item affix "><li class="spacer"></li><li class="chapter-item affix "><a href="appendix/background.html" target="_parent">Appendix A: Background topics</a></li><li class="chapter-item affix "><a href="appendix/glossary.html" target="_parent">Appendix B: Glossary</a></li><li class="chapter-item affix "><a href="appendix/code-index.html" target="_parent">Appendix C: Code Index</a></li><li class="chapter-item affix "><a href="appendix/compiler-lecture.html" target="_parent">Appendix D: Compiler Lecture Series</a></li><li class="chapter-item affix "><a href="appendix/bibliography.html" target="_parent">Appendix E: Bibliography</a></li><li class="chapter-item affix "><a href="appendix/humorust.html" target="_parent">Appendix Z: HumorRust</a></li><li class="chapter-item affix "><li class="spacer"></li></ol>
</body>
</html>