[][src]Struct chalk_engine::Answer

pub struct Answer<I: Interner> {
    pub subst: Canonical<AnswerSubst<I>>,
    pub ambiguous: bool,
}

An "answer" in the on-demand solver corresponds to a fully solved goal for a particular table (modulo delayed literals). It contains a substitution

Fields

subst: Canonical<AnswerSubst<I>>

Contains values for the unbound inference variables for which the table is true, along with any delayed subgoals (Which must still be proven) and region constrained (which must still be proven, but not by chalk).

ambiguous: bool

If this flag is set, then the answer could be neither proven nor disproven. This could be the size of the answer exceeded max_size or because of a negative loop (e.g., P :- not { P }).

Trait Implementations

impl<I: Clone + Interner> Clone for Answer<I>[src]

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

Auto Trait Implementations

impl<I> RefUnwindSafe for Answer<I> where
    <I as Interner>::InternedCanonicalVarKinds: RefUnwindSafe,
    <I as Interner>::InternedConstraints: RefUnwindSafe,
    <I as Interner>::InternedGoal: RefUnwindSafe,
    <I as Interner>::InternedProgramClauses: RefUnwindSafe,
    <I as Interner>::InternedSubstitution: RefUnwindSafe

impl<I> Send for Answer<I> where
    <I as Interner>::InternedCanonicalVarKinds: Send,
    <I as Interner>::InternedConstraints: Send,
    <I as Interner>::InternedGoal: Send,
    <I as Interner>::InternedProgramClauses: Send,
    <I as Interner>::InternedSubstitution: Send

impl<I> Sync for Answer<I> where
    <I as Interner>::InternedCanonicalVarKinds: Sync,
    <I as Interner>::InternedConstraints: Sync,
    <I as Interner>::InternedGoal: Sync,
    <I as Interner>::InternedProgramClauses: Sync,
    <I as Interner>::InternedSubstitution: Sync

impl<I> Unpin for Answer<I> where
    <I as Interner>::InternedCanonicalVarKinds: Unpin,
    <I as Interner>::InternedConstraints: Unpin,
    <I as Interner>::InternedGoal: Unpin,
    <I as Interner>::InternedProgramClauses: Unpin,
    <I as Interner>::InternedSubstitution: Unpin

impl<I> UnwindSafe for Answer<I> where
    <I as Interner>::InternedCanonicalVarKinds: UnwindSafe,
    <I as Interner>::InternedConstraints: UnwindSafe,
    <I as Interner>::InternedGoal: UnwindSafe,
    <I as Interner>::InternedProgramClauses: 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<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.