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.

Functions

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.
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).