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
impl<I: Eq + Interner> Eq for Guidance<I>
impl<I: Interner> StructuralEq for Guidance<I>
impl<I: Interner> StructuralPartialEq for Guidance<I>
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Cast for T
impl<T> Cast for T
sourcefn 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
.
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more