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.

Modules§

Structs§

  • 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 🔒
  • 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.
  • Arguments to Builder::then_else_break_inner that are usually forwarded to recursive invocations.

Enums§

Functions§

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