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_implafter unification withsource_trait_ref. If successful, returns the generic parameters for all the generics oftarget_impl, including both those needed to unify withsource_trait_refand those whose identity is determined via a where clause in the impl. - Query provider for
specialization_graph_of. - Is
impl1a specialization ofimpl2? - Recovers the “impl X for Y” signature from
impl_def_idand returns it as a string. - 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).
- Like translate_args, but obligations from the parent implementation are registered with the provided
ObligationCause.