Module rustc::traits
[−]
[src]
rustc_private)Trait Resolution. See the Book for more.
Reexports
pub use self::SelectionError::*; |
pub use self::FulfillmentErrorCode::*; |
pub use self::Vtable::*; |
pub use self::ObligationCauseCode::*; |
pub use self::select::{MethodMatched, MethodAmbiguous, MethodDidNotMatch}; |
Modules
| specialization_graph | [Unstable] |
Structs
| DerivedObligationCause | [Unstable] |
| EvaluationCache | [Unstable] |
| FulfillmentContext |
[Unstable] 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 | [Unstable] |
| GlobalFulfilledPredicates | [Unstable] |
| MismatchedProjectionTypes | [Unstable] |
| Normalized | [Unstable] |
| Obligation |
[Unstable] An |
| ObligationCause |
[Unstable] Why did we incur this obligation? Used for error reporting. |
| OverlapError |
[Unstable] Information pertinent to an overlapping impl error. |
| RegionObligation | [Unstable] |
| SelectionCache | [Unstable] |
| SelectionContext | [Unstable] |
| SpecializesCache | [Unstable] |
| SupertraitDefIds | [Unstable] |
| TraitErrorKey | [Unstable] |
| VtableBuiltinData | [Unstable] |
| VtableClosureData | [Unstable] |
| VtableDefaultImplData | [Unstable] |
| VtableFnPointerData | [Unstable] |
| VtableImplData |
[Unstable] Identifies a particular impl in the source, along with a set of
substitutions from the impl's type/lifetime parameters. The
|
| VtableObjectData |
[Unstable] A vtable for some object-safe trait |
Enums
| FulfillmentErrorCode | [Unstable] |
| MethodMatchResult | [Unstable] |
| MethodMatchedData | [Unstable] |
| MethodViolationCode |
[Unstable] Reasons a method might not be object-safe. |
| ObjectSafetyViolation | [Unstable] |
| ObligationCauseCode | [Unstable] |
| OrphanCheckErr | [Unstable] |
| ProjectionMode |
[Unstable] Depending on the stage of compilation, we want projection to be more or less conservative. |
| SelectionError | [Unstable] |
| Vtable |
[Unstable] Given the successful resolution of an obligation, the |
Functions
| elaborate_predicates | [Unstable] |
| fully_normalize | [Unstable] |
| normalize |
[Unstable] Normalizes any associated type projections in |
| normalize_param_env_or_error |
[Unstable] Normalizes the parameter environment, reporting errors if they occur. |
| orphan_check |
[Unstable] Checks the coherence orphan rules. |
| overlapping_impls |
[Unstable] If there are types that satisfy both impls, returns a suitably-freshened
|
| predicates_for_generics |
[Unstable] Creates predicate obligations from the generic bounds. |
| specializes |
[Unstable] Is impl1 a specialization of impl2? |
| supertrait_def_ids | [Unstable] |
| supertraits | [Unstable] |
| transitive_bounds | [Unstable] |
| translate_substs |
[Unstable] 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_builtin_bound |
[Unstable] Determines whether the type |
Type Definitions
| Obligations | [Unstable] |
| PredicateObligation | [Unstable] |
| PredicateObligations | [Unstable] |
| Selection | [Unstable] |
| SelectionResult |
[Unstable] When performing resolution, it is typically the case that there can be one of three outcomes: |
| Supertraits | [Unstable] |
| TraitObligation | [Unstable] |
| TraitObligations | [Unstable] |