Expand description
Candidate selection. See the rustc dev guide for more information on how this works.
Modulesยง
- _match ๐
- candidate_
assembly ๐ - Candidate assembly.
- confirmation ๐
- Confirmation.
Structsยง
- Evaluated
Candidate ๐ - Provisional
Evaluation ๐ - A cache value for the provisional cache: contains the depth-first number (DFN) and result.
- Provisional
Evaluation ๐Cache - The โprovisional evaluation cacheโ is used to store intermediate cache results when solving auto traits. Auto traits are unusual in that they can support cycles. So, for example, a โproof treeโ like this would be ok:
- Selection
Candidate ๐Set - Selection
Context - Trait
Obligation ๐Stack - Trait
Obligation ๐Stack List
Enumsยง
- Builtin
Impl ๐Conditions - When does the builtin impl for
T: Trait
apply? - Evaluation
Result - The result of trait evaluation. The order is important here as the evaluation of a list is the maximum of the evaluations.
- Intercrate
Ambiguity Cause - Overflow
Error - Indicates that trait evaluation caused overflow and in which pass.
- Projection
Matches ๐Projection - Selection
Candidate - 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 fori32
. In that case, we drop the impl out of the list. But the other cases are considered candidates.