Module specialize

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.