- InCrate 🔒Whether we do the orphan check relative to this crate or to some remote crate.
- Compute the
intercrate_ambiguity_causesfor the new solver using “proof trees”.
- 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 the coherence orphan rules.
impl_def_idshould be the
DefIdof a trait impl. To pass, either the trait must be local, or else two conditions must be satisfied:
- Checks whether a trait-ref is potentially implementable by a crate.
- overlap 🔒Can both impl
bbe satisfied by a common type (including where-clauses)? If so, returns an
ImplHeaderthat unifies the two impls.
- If there are types that satisfy both impls, returns
Somewith a suitably-freshened
ImplHeaderwith those types substituted. Otherwise, returns
- Returns whether all impls which would apply to the
Ty: Trait<Arg>are already known in the local crate.