Module rustc_middle::traits
source · Expand description
Trait Resolution. See the rustc dev guide for more information on how this works.
Re-exports
pub use self::select::EvaluationCache;
pub use self::select::EvaluationResult;
pub use self::select::OverflowError;
pub use self::select::SelectionCache;
pub use self::ObligationCauseCode::*;
Modules
chalk 🔒
Types required for Chalk-related queries
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
.Candidate selection. See the rustc dev guide for more information on how this works.
Structs
A chalk environment and goal.
Identifies a particular impl in the source, along with a set of
substitutions from the impl’s type/lifetime parameters. The
nested
vector corresponds to the nested obligations attached to
the impl’s type parameters.The reason why we incurred this obligation; used for error reporting.
Enums
These are the error cases for
codegen_select_candidate
.Given the successful resolution of an obligation, the
ImplSource
indicates 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. Foo
in Option<Foo>
).Type Definitions
When performing resolution, it is typically the case that there
can be one of three outcomes: