Module rustc_trait_selection::traits::select

source ·
Expand description

Candidate selection. See the rustc dev guide for more information on how this works.




  • When does the builtin impl for T: Trait apply?
  • DropVictim 🔒
  • The result of trait evaluation. The order is important here as the evaluation of a list is the maximum of the evaluations.
  • Whether to consider the binder of higher ranked goals for the leak_check when evaluating higher-ranked goals. See #119820 for more info.
  • Indicates that trait evaluation caused overflow and in which pass.
  • The selection process begins by considering all impls, where clauses, and so forth that might resolve an obligation. Sometimes we’ll be able to say definitively that (e.g.) an impl does not apply to the obligation: perhaps it is defined for usize but the obligation is for i32. In that case, we drop the impl out of the list. But the other cases are considered candidates.


  • Replace all regions inside the coroutine interior with late bound regions. Note that each region slot in the types gets a new fresh late bound region, which means that none of the regions inside relate to any other, even if typeck had previously found constraints that would cause them to be related.

Type Aliases§