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