Enum chalk_solve::solve::Guidance
source · 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§
Definite(Canonical<Substitution<I>>)
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.
Suggested(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.
Unknown
There’s no useful information to feed back to type inference
Trait Implementations§
source§impl<I: PartialEq + Interner> PartialEq for Guidance<I>
impl<I: PartialEq + Interner> PartialEq for Guidance<I>
impl<I: Eq + Interner> Eq for Guidance<I>
impl<I: Interner> StructuralPartialEq for Guidance<I>
Auto Trait Implementations§
impl<I> Freeze for Guidance<I>where
<I as Interner>::InternedSubstitution: Freeze,
<I as Interner>::InternedCanonicalVarKinds: Freeze,
impl<I> RefUnwindSafe for Guidance<I>where
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedCanonicalVarKinds: RefUnwindSafe,
impl<I> Send for Guidance<I>where
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedCanonicalVarKinds: Send,
impl<I> Sync for Guidance<I>where
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedCanonicalVarKinds: Sync,
impl<I> Unpin for Guidance<I>where
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedCanonicalVarKinds: Unpin,
impl<I> UnwindSafe for Guidance<I>where
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedCanonicalVarKinds: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> Cast for T
impl<T> Cast for T
source§fn cast<U>(self, interner: <U as HasInterner>::Interner) -> Uwhere
Self: CastTo<U>,
U: HasInterner,
fn cast<U>(self, interner: <U as HasInterner>::Interner) -> Uwhere
Self: CastTo<U>,
U: HasInterner,
Cast a value to type
U
using CastTo
.source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.