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

Structs

Information pertinent to an overlapping impl error.

Statics

CALLSITE 🔒
CALLSITE 🔒
CALLSITE 🔒
CALLSITE 🔒
CALLSITE 🔒
CALLSITE 🔒
META 🔒
META 🔒
META 🔒
META 🔒
META 🔒
META 🔒

Functions

decorate 🔒
Attempt to fulfill all obligations of target_impl after unification with source_trait_ref. If successful, returns a substitution 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.
Query provider for specialization_graph_of.
Is impl1 a specialization of impl2?
Recovers the “impl X for Y” signature from impl_def_id and returns it as a string.
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).