Module traits

Source
Expand description

Trait Resolution. See the rustc-dev-guide for more information on how this works.

Re-exports§

pub use self::ImplSource::*;
pub use self::SelectionError::*;

Modules§

engine 🔒
project 🔒
Code for projecting associated types out of trait references.
query
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 rustc_traits.
select
Candidate selection. See the rustc dev guide for more information on how this works.
solve
specialization_graph
structural_impls 🔒
util

Structs§

DerivedCause
DerivedHostCause
IfExpressionCause
ImplDerivedCause
ImplDerivedHostCause
ImplSourceUserDefinedData
Identifies a particular impl in the source, along with a set of generic parameters from the impl’s type/lifetime parameters. The nested vector corresponds to the nested obligations attached to the impl’s type parameters.
MatchExpressionArmCause
MismatchedProjectionTypes
Normalized
Obligation
An Obligation represents some trait reference (e.g., i32: Eq) for which the “impl_source” must be found. The process of finding an “impl_source” is called “resolving” the Obligation. This process consists of either identifying an impl (e.g., impl Eq for i32) that satisfies the obligation, or else finding a bound that is in scope. The eventual result is usually a Selection (defined below).
ObligationCause
The reason why we incurred this obligation; used for error reporting.
ObligationCauseCodeHandle
A compact form of ObligationCauseCode.
PatternOriginExpr
Information about the origin expression of a pattern, relevant to diagnostics. Fields here refer to the scrutinee of a pattern. If the scrutinee isn’t given in the diagnostic, then this won’t exist.
ProjectionCache
The projection cache. Unlike the standard caches, this can include infcx-dependent type variables, therefore we have to roll the cache back each time we roll a snapshot back, to avoid assumptions on yet-unresolved inference variables. Types with placeholder regions also have to be removed when the respective snapshot ends.
ProjectionCacheKey
ProjectionCacheStorage
SignatureMismatchData

Enums§

BuiltinImplSource
CodegenObligationError
These are the error cases for codegen_select_candidate.
DynCompatibilityViolation
DynCompatibilityViolationSolution
EvaluationResult
The result of trait evaluation. The order is important here as the evaluation of a list is the maximum of the evaluations.
ImplSource
Given the successful resolution of an obligation, the ImplSource indicates where the impl comes from.
IsConstable
Whether a value can be extracted into a const. Used for diagnostics around array repeat expressions.
MethodViolationCode
Reasons a method might not be dyn-compatible.
ObligationCauseCode
OverflowError
Indicates that trait evaluation caused overflow and in which pass.
ProjectionCacheEntry
ScrubbedTraitError
A trait error with most of its information removed. This is the error returned by an ObligationCtxt by default, and suitable if you just want to see if a predicate holds, and don’t particularly care about the error itself (except for if it’s an ambiguity or true error).
SelectionError
WellFormedLoc
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. Foo in Option<Foo>).

Traits§

FromSolverError
TraitEngine

Type Aliases§

EvaluationCache
NormalizedTerm
ObligationInspector
A callback that can be provided to inspect_typeck. Invoked on evaluation of root obligations.
PolyTraitObligation
PredicateObligation
PredicateObligations
Selection
SelectionCache
SelectionResult
When performing resolution, it is typically the case that there can be one of three outcomes:
TraitObligation