Module rustc_trait_selection::traits::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
Structs
- Information pertinent to an overlapping impl error.
Functions
- Attempt to fulfill all obligations of
target_impl
after unification withsource_trait_ref
. If successful, returns a substitution for all the generics oftarget_impl
, including both those needed to unify withsource_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 ofimpl2
? - 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).
- Like translate_args, but obligations from the parent implementation are registered with the provided
ObligationCause
.