Module rustc::traits
[−]
[src]
rustc_private
)Trait Resolution. See README.md for an overview of how this works.
Reexports
pub use self::SelectionError::*; |
pub use self::FulfillmentErrorCode::*; |
pub use self::Vtable::*; |
pub use self::ObligationCauseCode::*; |
pub use self::select::MethodMatched; |
pub use self::select::MethodAmbiguous; |
pub use self::select::MethodDidNotMatch; |
Modules
specialization_graph |
[ Experimental ]
|
Structs
DerivedObligationCause |
[ Experimental ]
|
EvaluationCache |
[ Experimental ]
|
FulfillmentContext |
[ Experimental ] The fulfillment context is used to drive trait resolution. It
consists of a list of obligations that must be (eventually)
satisfied. The job is to track which are satisfied, which yielded
errors, and which are still pending. At any point, users can call
|
FulfillmentError |
[ Experimental ]
|
GlobalFulfilledPredicates |
[ Experimental ]
|
MismatchedProjectionTypes |
[ Experimental ]
|
Normalized |
[ Experimental ]
|
Obligation |
[ Experimental ] An |
ObligationCause |
[ Experimental ] Why did we incur this obligation? Used for error reporting. |
OverlapError |
[ Experimental ] Information pertinent to an overlapping impl error. |
ProjectionCache |
[ Experimental ]
|
ProjectionCacheSnapshot |
[ Experimental ]
|
RegionObligation |
[ Experimental ]
|
SelectionCache |
[ Experimental ]
|
SelectionContext |
[ Experimental ]
|
SpecializesCache |
[ Experimental ]
|
SupertraitDefIds |
[ Experimental ]
|
TraitErrorKey |
[ Experimental ]
|
VtableBuiltinData |
[ Experimental ]
|
VtableClosureData |
[ Experimental ]
|
VtableDefaultImplData |
[ Experimental ]
|
VtableFnPointerData |
[ Experimental ]
|
VtableImplData |
[ Experimental ] Identifies a particular impl in the source, along with a set of
substitutions from the impl's type/lifetime parameters. The
|
VtableObjectData |
[ Experimental ] A vtable for some object-safe trait |
Enums
FulfillmentErrorCode |
[ Experimental ]
|
MethodMatchResult |
[ Experimental ]
|
MethodMatchedData |
[ Experimental ]
|
MethodViolationCode |
[ Experimental ] Reasons a method might not be object-safe. |
ObjectSafetyViolation |
[ Experimental ]
|
ObligationCauseCode |
[ Experimental ]
|
OrphanCheckErr |
[ Experimental ]
|
Reveal |
[ Experimental ] Depending on the stage of compilation, we want projection to be more or less conservative. |
SelectionError |
[ Experimental ]
|
Vtable |
[ Experimental ] Given the successful resolution of an obligation, the |
Functions
elaborate_predicates |
[ Experimental ]
|
find_method |
[ Experimental ] Given a selected impl described by |
fully_normalize |
[ Experimental ]
|
get_vtable_methods |
[ Experimental ] Given a trait |
normalize |
[ Experimental ] Normalizes any associated type projections in |
normalize_and_test_predicates |
[ Experimental ] Normalizes the predicates and checks whether they hold. If this returns false, then either normalize encountered an error or one of the predicates did not hold. Used when creating vtables to check for unsatisfiable methods. |
normalize_param_env_or_error |
[ Experimental ] Normalizes the parameter environment, reporting errors if they occur. |
normalize_projection_type |
[ Experimental ] The guts of |
orphan_check |
[ Experimental ] Checks the coherence orphan rules. |
overlapping_impls |
[ Experimental ] If there are types that satisfy both impls, returns a suitably-freshened
|
predicates_for_generics |
[ Experimental ] Creates predicate obligations from the generic bounds. |
specializes |
[ Experimental ] Is impl1 a specialization of impl2? |
supertrait_def_ids |
[ Experimental ]
|
supertraits |
[ Experimental ]
|
transitive_bounds |
[ Experimental ]
|
translate_substs |
[ Experimental ] Given a subst for the requested impl, translate it to a subst
appropriate for the actual item definition (whether it be in that impl,
a parent impl, or the trait).
When we have selected one impl, but are actually using item definitions from
a parent impl providing a default, we need a way to translate between the
type parameters of the two impls. Here the |
type_known_to_meet_bound |
[ Experimental ] Determines whether the type |
Type Definitions
Obligations |
[ Experimental ]
|
PredicateObligation |
[ Experimental ]
|
PredicateObligations |
[ Experimental ]
|
Selection |
[ Experimental ]
|
SelectionResult |
[ Experimental ] When performing resolution, it is typically the case that there can be one of three outcomes: |
Supertraits |
[ Experimental ]
|
TraitObligation |
[ Experimental ]
|
TraitObligations |
[ Experimental ]
|