Struct chalk_ir::ProgramClauseImplication [−][src]
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: ClausePriorityThe 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]
&'a self,
interner: &'a I
) -> ProgramClauseImplicationDebug<'a, I>
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]
fn clone(&self) -> ProgramClauseImplication<I>[src]
pub fn clone_from(&mut self, source: &Self)1.0.0[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
fn fold_with<'i>(
self,
folder: &mut dyn Folder<'i, I>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i, [src]
self,
folder: &mut dyn Folder<'i, I>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
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]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<I: PartialEq + Interner> PartialEq<ProgramClauseImplication<I>> for ProgramClauseImplication<I>[src]
fn eq(&self, other: &ProgramClauseImplication<I>) -> bool[src]
fn ne(&self, other: &ProgramClauseImplication<I>) -> bool[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]
fn visit_with<'i, B>(
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> where
I: 'i, [src]
&self,
visitor: &mut dyn Visitor<'i, I, BreakTy = B>,
outer_binder: DebruijnIndex
) -> ControlFlow<B> where
I: 'i,
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,
<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,
<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,
<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,
<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,
<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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Cast for T[src]
fn cast<U>(self, interner: &U::Interner) -> U where
Self: CastTo<U>,
U: HasInterner, [src]
Self: CastTo<U>,
U: HasInterner,
impl<T, I> CouldMatch<T> for T where
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner, [src]
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
I: Interner,
pub fn could_match(&Self, &I, &dyn UnificationDatabase<I>, &T) -> bool[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, I> Shift<I> for T where
T: Fold<I>,
I: Interner, [src]
T: Fold<I>,
I: Interner,
pub fn shifted_in(Self, &I) -> <T as Fold<I>>::Result[src]
pub fn shifted_in_from(Self, &I, DebruijnIndex) -> <T as Fold<I>>::Result[src]
pub fn shifted_out_to(
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>[src]
Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I>>::Result, NoSolution>
pub fn shifted_out(Self, &I) -> Result<<T as Fold<I>>::Result, NoSolution>[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T, I> VisitExt<I> for T where
T: Visit<I>,
I: Interner, [src]
T: Visit<I>,
I: Interner,