[][src]Struct chalk_ir::ProgramClauseImplication

pub struct ProgramClauseImplication<I: Interner> {
    pub consequence: DomainGoal<I>,
    pub conditions: Goals<I>,
    pub constraints: Constraints<I>,
    pub priority: ClausePriority,
}

Represents one clause of the form consequence :- conditions where conditions = cond_1 && cond_2 && ... is the conjunction of the individual conditions.

Fields

consequence: DomainGoal<I>

The consequence of the clause, which holds if the conditions holds.

conditions: Goals<I>

The condition goals that should hold.

constraints: Constraints<I>

The lifetime constraints that should be proven.

priority: ClausePriority

The relative priority of the implication.

Implementations

impl<I: Interner> ProgramClauseImplication<I>[src]

pub fn debug<'a>(
    &'a self,
    interner: &'a I
) -> ProgramClauseImplicationDebug<'a, I>
[src]

Show debug output for the program clause implication.

impl<I: Interner> ProgramClauseImplication<I>[src]

pub fn into_from_env_clause(self, interner: &I) -> ProgramClauseImplication<I>[src]

Change the implication into an application holding a FromEnv goal.

Trait Implementations

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

impl<I: Interner> Debug for ProgramClauseImplication<I>[src]

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

impl<I: Interner> Fold<I> for ProgramClauseImplication<I>[src]

type Result = ProgramClauseImplication<I>

The type of value that will be produced once folding is done. Typically this is Self, unless Self contains borrowed values, in which case owned values are produced (for example, one can fold over a &T value where T: Fold, in which case you get back a T, not a &T). Read more

impl<I: Interner> HasInterner for ProgramClauseImplication<I>[src]

type Interner = I

The interner associated with the type.

impl<I: Hash + Interner> Hash for ProgramClauseImplication<I>[src]

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

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

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

impl<I: Interner> Visit<I> for ProgramClauseImplication<I>[src]

impl<I: Interner> Zip<I> for ProgramClauseImplication<I>[src]

Auto Trait Implementations

impl<I> RefUnwindSafe for ProgramClauseImplication<I> where
    <I as Interner>::DefId: RefUnwindSafe,
    <I as Interner>::InternedConstraints: RefUnwindSafe,
    <I as Interner>::InternedGoals: RefUnwindSafe,
    <I as Interner>::InternedLifetime: RefUnwindSafe,
    <I as Interner>::InternedSubstitution: RefUnwindSafe,
    <I as Interner>::InternedType: RefUnwindSafe

impl<I> Send for ProgramClauseImplication<I> where
    <I as Interner>::DefId: Send,
    <I as Interner>::InternedConstraints: Send,
    <I as Interner>::InternedGoals: Send,
    <I as Interner>::InternedLifetime: Send,
    <I as Interner>::InternedSubstitution: Send,
    <I as Interner>::InternedType: Send

impl<I> Sync for ProgramClauseImplication<I> where
    <I as Interner>::DefId: Sync,
    <I as Interner>::InternedConstraints: Sync,
    <I as Interner>::InternedGoals: Sync,
    <I as Interner>::InternedLifetime: Sync,
    <I as Interner>::InternedSubstitution: Sync,
    <I as Interner>::InternedType: Sync

impl<I> Unpin for ProgramClauseImplication<I> where
    <I as Interner>::DefId: Unpin,
    <I as Interner>::InternedConstraints: Unpin,
    <I as Interner>::InternedGoals: Unpin,
    <I as Interner>::InternedLifetime: Unpin,
    <I as Interner>::InternedSubstitution: Unpin,
    <I as Interner>::InternedType: Unpin

impl<I> UnwindSafe for ProgramClauseImplication<I> where
    <I as Interner>::DefId: UnwindSafe,
    <I as Interner>::InternedConstraints: UnwindSafe,
    <I as Interner>::InternedGoals: UnwindSafe,
    <I as Interner>::InternedLifetime: UnwindSafe,
    <I as Interner>::InternedSubstitution: UnwindSafe,
    <I as Interner>::InternedType: 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, I> CouldMatch<T> for T where
    I: Interner,
    T: Zip<I> + HasInterner<Interner = I> + ?Sized
[src]

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

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

impl<T, I> Shift<I> for T where
    I: Interner,
    T: Fold<I>, 
[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.

impl<T, I> VisitExt<I> for T where
    I: Interner,
    T: Visit<I>, 
[src]