rustc_trait_selection::traits

Module specialize

Source
Expand description

Logic and data structures related to impl specialization, explained in greater detail below.

At the moment, this implementation support only the simple “chain” rule: If any two impls overlap, one must be a strict subset of the other.

See the rustc dev guide for a bit more detail on how specialization fits together with the rest of the trait machinery.

Modules§

specialization_graph

Structs§

OverlapError
Information pertinent to an overlapping impl error.

Functions§

fulfill_implication 🔒
Attempt to fulfill all obligations of target_impl after unification with source_trait_ref. If successful, returns the generic parameters for all the generics of target_impl, including both those needed to unify with source_trait_ref and those whose identity is determined via a where clause in the impl.
report_conflicting_impls 🔒
report_negative_positive_conflict 🔒
report_overlap_conflict 🔒
specialization_enabled_in 🔒
specialization_graph_provider 🔒
Query provider for specialization_graph_of.
specializes 🔒
Is specializing_impl_def_id a specialization of parent_impl_def_id?
translate_args
Given the generic parameters for the requested impl, translate it to the generic parameters appropriate for the actual item definition (whether it be in that impl, a parent impl, or the trait).
translate_args_with_cause
Like translate_args, but obligations from the parent implementation are registered with the provided ObligationCause.