[][src]Struct chalk_ir::ProgramClauseImplication

pub struct ProgramClauseImplication<I: Interner> {
    pub consequence: DomainGoal<I>,
    pub conditions: Goals<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>conditions: Goals<I>priority: ClausePriority

Implementations

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

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

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

Trait Implementations

impl<I: Interner> CastTo<ProgramClause<I>> for ProgramClauseImplication<I>[src]

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, _TI> Fold<I, _TI> for ProgramClauseImplication<I> where
    _TI: TargetInterner<I>, 
[src]

type Result = ProgramClauseImplication<_TI>

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

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>::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>::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>::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>::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>::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> CastTo<ProgramClause<I>> for T where
    I: Interner,
    T: CastTo<DomainGoal<I>>, 
[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, 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]