Expand description
See Rustc Dev Guide chapters on trait-resolution and trait-specialization for more info on how this works.
Structs§
Enums§
- Whether we do the orphan check relative to this crate or to some remote crate.
- The result of [fn impl_intersection_has_impossible_obligation].
- Track
Ambiguity πCauses
Functions§
- Compute the
intercrate_ambiguity_causes
for the new solver using βproof treesβ. - equate_
impl_ πheaders - fresh_
impl_ πheader - 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.
- 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.
- 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. - If there are types that satisfy both impls, returns
Some
with a suitably-freshenedImplHeader
with those types instantiated. Otherwise, returnsNone
. - Returns whether all impls which would apply to the
trait_ref
e.g.Ty: Trait<Arg>
are already known in the local crate.