[][src]Enum chalk_solve::solve::Guidance

pub enum Guidance<I: Interner> {
    Definite(Canonical<Substitution<I>>),
    Suggested(Canonical<Substitution<I>>),
    Unknown,
}

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: Clone + Interner> Clone for Guidance<I>[src]

impl<I: Debug + Interner> Debug for Guidance<I>[src]

impl<I: Eq + Interner> Eq for Guidance<I>[src]

impl<I: PartialEq + Interner> PartialEq<Guidance<I>> for Guidance<I>[src]

impl<I: Interner> StructuralEq for Guidance<I>[src]

impl<I: Interner> StructuralPartialEq for Guidance<I>[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Cast for T[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.