Expand description
See Rustc Dev Guide chapters on trait-resolution and trait-specialization for more info on how this works.
Structs§
Enums§
- Conflict
- InCrate
- Whether we do the orphan check relative to this crate or to some remote crate.
- Intersection
HasImpossible 🔒Obligations - The result of [fn impl_intersection_has_impossible_obligation].
- IsFirst
Input Type - Orphan
Check Err - Orphan
Check Mode - Track
Ambiguity 🔒Causes
Functions§
- add_
placeholder_ note - compute_
intercrate_ 🔒ambiguity_ causes - Compute the
intercrate_ambiguity_causes
for the new solver using “proof trees”. - equate_
impl_ 🔒headers - fresh_
impl_ 🔒header - fresh_
impl_ 🔒header_ normalized - impl_
intersection_ 🔒has_ impossible_ obligation - Check if both impls can be satisfied by a common type by considering whether any of either impl’s obligations is not known to hold.
- impl_
intersection_ 🔒has_ negative_ obligation - Check if both impls can be satisfied by a common type by considering whether any of first impl’s obligations is known not to hold via a negative predicate.
- orphan_
check_ trait_ ref - Checks whether a trait-ref is potentially implementable by a crate.
- overlap 🔒
- Can both impl
a
and implb
be satisfied by a common type (including where-clauses)? If so, returns anImplHeader
that unifies the two impls. - overlapping_
impls - If there are types that satisfy both impls, returns
Some
with a suitably-freshenedImplHeader
with those types instantiated. Otherwise, returnsNone
. - plug_
infer_ 🔒with_ placeholders - search_
ambiguity_ 🔒causes - suggest_
increasing_ 🔒recursion_ limit - trait_
ref_ is_ knowable - Returns whether all impls which would apply to the
trait_ref
e.g.Ty: Trait<Arg>
are already known in the local crate. - trait_
ref_ is_ local_ or_ fundamental - try_
prove_ 🔒negated_ where_ clause