Modules

block 🔒
cfg 🔒
Routines for manipulating the control-flow graph.
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

BlockAnd 🔒
The BlockAnd “monad” packages up the new basic block along with a produced value (sometimes just unit, of course). The unpack! macro (and methods below) makes working with BlockAnd much more convenient.
Builder 🔒
CFG 🔒
Capture 🔒
GuardFrame 🔒
ScopeId 🔒

Enums

BlockFrame 🔒
ForGuard 🔒
ForGuard indicates whether we are talking about:

Traits

Functions

Construct MIR for an item that has had errors in type checking.
the main entry point for building MIR for a function
mir_build 🔒
Construct the MIR for a given DefId.
mir_built 🔒

Type Definitions

CaptureMap 🔒