[−][src]Module rustc_trait_selection::traits::specialize

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

report_conflicting_impls
report_negative_positive_conflict
report_overlap_conflict
specialization_graph_provider
specializes

Is impl1 a specialization of impl2?

to_pretty_impl_header

Recovers the "impl X for Y" signature from impl_def_id and returns it as a string.

translate_substs

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