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.
InternedObligationCauseCode
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.
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
UnifyReceiverContext

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
StatementAsExpression
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