Enum chalk_solve::solve::Guidance [−][src]
pub enum Guidance<I: Interner> { Definite(Canonical<Substitution<I>>), Suggested(Canonical<Substitution<I>>), Unknown, }
Expand description
When a goal holds ambiguously (e.g., because there are multiple possible solutions), we issue a set of guidance back to type inference.
Variants
The existential variables must have the given values if the goal is ever to hold, but that alone isn’t enough to guarantee the goal will actually hold.
Tuple Fields of Definite
0: Canonical<Substitution<I>>
There are multiple plausible values for the existentials, but the ones here are suggested as the preferred choice heuristically. These should be used for inference fallback only.
Tuple Fields of Suggested
0: Canonical<Substitution<I>>
There’s no useful information to feed back to type inference
Trait Implementations
Auto Trait Implementations
impl<I> RefUnwindSafe for Guidance<I> where
<I as Interner>::InternedCanonicalVarKinds: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
impl<I> Send for Guidance<I> where
<I as Interner>::InternedCanonicalVarKinds: Send,
<I as Interner>::InternedSubstitution: Send,
impl<I> Sync for Guidance<I> where
<I as Interner>::InternedCanonicalVarKinds: Sync,
<I as Interner>::InternedSubstitution: Sync,
impl<I> Unpin for Guidance<I> where
<I as Interner>::InternedCanonicalVarKinds: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
impl<I> UnwindSafe for Guidance<I> where
<I as Interner>::InternedCanonicalVarKinds: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
fn cast<U>(self, interner: &<U as HasInterner>::Interner) -> U where
Self: CastTo<U>,
U: HasInterner,
fn cast<U>(self, interner: &<U as HasInterner>::Interner) -> U where
Self: CastTo<U>,
U: HasInterner,
Cast a value to type U
using CastTo
.
Compare self to key
and return true
if they are equal.
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more