Modules§
- block π
- cfg πRoutines for manipulating the control-flow graph.
- coverageinfo π
- custom πProvides the implementation of the
custom_mir
attribute. - expr πBuilds MIR from expressions. As a caller into this module, you have many options, but the first thing you have to decide is whether you are evaluating this expression for its value, its location, or as a constant.
- matches πCode related to match expressions. These are sufficiently complex to warrant their own module and submodules. :) This main module includes the high-level algorithm, the submodules contain the details.
- misc πMiscellaneous builder routines that are not specific to building any particular kind of thing.
- scope πManaging the scope stack. The scopes are tied to lexical scopes, so as we descend the THIR, we push a scope on the stack, build its contents, and then pop it off. Every scope is named by a
region::Scope
.
Macros§
- unpack πUpdate a block pointer and return the value. Use it like
let x = unpack!(block = self.foo(block, foo))
.
Structs§
- Block
And πTheBlockAnd
βmonadβ packages up the new basic block along with a produced value (sometimes just unit, of course). Theunpack!
macro (and methods below) makes working withBlockAnd
much more convenient. - Block
Context π - Builder π
- CFG π
- Capture π
- Guard
Frame π - Guard
Frame πLocal - ScopeId π
Enums§
- Block
Frame π - ForGuard π
ForGuard
indicates whether we are talking about: - Locals
ForNode π - Needs
Temporary π
Traits§
- Block
AndExtension π
Functions§
- construct_
const π - construct_
error πConstruct MIR for an item that has had errors in type checking. - construct_
fn πthe main entry point for building MIR for a function - mir_
build πConstruct the MIR for a givenDefId
.
Type Aliases§
- Capture
Map π