Trait Resolution. See the rustc dev guide for more information on how this works.
pub use self::select::EvaluationCache;
pub use self::select::EvaluationResult;
pub use self::select::OverflowError;
pub use self::select::SelectionCache;
pub use self::ObligationCauseCode::*;
- Experimental types for the trait query interface. The methods defined in this module are all based on canonicalization, which makes a canonical query by replacing unbound inference variables and regions, so that results can be reused more broadly. The providers for the queries defined here can be found in
- Candidate selection. See the rustc dev guide for more information on how this works.
- Identifies a particular impl in the source, along with a set of substitutions from the impl’s type/lifetime parameters. The
nestedvector corresponds to the nested obligations attached to the impl’s type parameters.
- The reason why we incurred this obligation; used for error reporting.
- These are the error cases for
- Given the successful resolution of an obligation, the
ImplSourceindicates where the impl comes from.
- Reasons a method might not be object-safe.
- Depending on the stage of compilation, we want projection to be more or less conservative.
- The ‘location’ at which we try to perform HIR-based wf checking. This information is used to obtain an
hir::Ty, which we can walk in order to obtain precise spans for any ‘nested’ types (e.g.
- When performing resolution, it is typically the case that there can be one of three outcomes: