Module rustc_mir_build::build::matches

source Β·
Expand description

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.

This also includes code for pattern bindings in let statements and function parameters.



  • ArmHasGuard πŸ”’
    ArmHasGuard is a wrapper around a boolean flag. It indicates whether a match arm has a guard expression attached to it.
  • Ascription πŸ”’
    Indicates that the type of source must be a subtype of the user-given type user_ty; this is basically a no-op but can influence region inference.
  • Binding πŸ”’
  • Candidate πŸ”’
  • FlatPat πŸ”’
    A pattern in a form suitable for generating code.
  • MatchPair πŸ”’
  • PatternExtraData πŸ”’
    Data extracted from a pattern that doesn’t affect which branch is taken. Collected during pattern simplification and not mutated later.
  • Test πŸ”’
    A test to perform to determine which Candidate matches a value.
  • ThenElseArgs πŸ”’
    Arguments to Builder::then_else_break_inner that are usually forwarded to recursive invocations.



  • A depth-first traversal of the Candidate and all of its recursive subcandidates.