[][src]Struct chalk_engine::ExClause

pub struct ExClause<C: Context> {
    pub subst: C::Substitution,
    pub delayed_literals: Vec<DelayedLiteral<C>>,
    pub constraints: Vec<C::RegionConstraint>,
    pub subgoals: Vec<Literal<C>>,
    pub current_time: TimeStamp,
    pub floundered_subgoals: Vec<FlounderedSubgoal<C>>,
}

The paper describes these as A :- D | G.

Fields

subst: C::Substitution

The substitution which, applied to the goal of our table, would yield A.

delayed_literals: Vec<DelayedLiteral<C>>

Delayed literals: things that we depend on negatively, but which have not yet been fully evaluated.

constraints: Vec<C::RegionConstraint>

Region constraints we have accumulated.

subgoals: Vec<Literal<C>>

Subgoals: literals that must be proven

current_time: TimeStamp

Time stamp that is incremented each time we find an answer to some subgoal. This is used to figure out whether any of the floundered subgoals may no longer be floundered: we record the current time when we add something to the list of floundered subgoals, and then we can compare whether its value has changed since then.

floundered_subgoals: Vec<FlounderedSubgoal<C>>

List of subgoals that have floundered. See FlounderedSubgoal for more information.

Trait Implementations

impl<C: Eq + Context> Eq for ExClause<C> where
    C::Substitution: Eq,
    C::RegionConstraint: Eq
[src]

impl<C: PartialEq + Context> PartialEq<ExClause<C>> for ExClause<C> where
    C::Substitution: PartialEq,
    C::RegionConstraint: PartialEq
[src]

impl<C: Clone + Context> Clone for ExClause<C> where
    C::Substitution: Clone,
    C::RegionConstraint: Clone
[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<C: Hash + Context> Hash for ExClause<C> where
    C::Substitution: Hash,
    C::RegionConstraint: Hash
[src]

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given [Hasher]. Read more

impl<C: Debug + Context> Debug for ExClause<C> where
    C::Substitution: Debug,
    C::RegionConstraint: Debug
[src]

Auto Trait Implementations

impl<C> Send for ExClause<C> where
    <C as Context>::CanonicalConstrainedSubst: Send,
    <C as Context>::GoalInEnvironment: Send,
    <C as Context>::RegionConstraint: Send,
    <C as Context>::Substitution: Send

impl<C> Sync for ExClause<C> where
    <C as Context>::CanonicalConstrainedSubst: Sync,
    <C as Context>::GoalInEnvironment: Sync,
    <C as Context>::RegionConstraint: Sync,
    <C as Context>::Substitution: Sync

Blanket Implementations

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

type Owned = T

The resulting type after obtaining ownership.

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

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

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.

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

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

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