RuleMonitorLike

Trait RuleMonitorLike 

pub trait RuleMonitorLike<A, OA, OT, M, P, R>
where A: Action<Single>, OA: Action<OT, S = A>, OT: Dimension, M: InverseModelMonoid<OA, P, OT>, P: PredicateInner, R: RuleLike<A = A, P = P>,
{ // Required method fn update( &mut self, insertion: impl IntoIterator<Item = R>, deletion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M>; // Provided methods fn insert( &mut self, insertion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M> { ... } fn delete( &mut self, deletion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M> { ... } }
Expand description

Rule storage and IM generator.

[A]: Action type inside the monitor. [OA]: Output action type of the inverse model. [T]: Dimension type of the inverse model. [M]: Inverse model monoid type. [P]: Predicate type inside the monitor. [R]: Rule type stored inside the monitor.

Required Methods§

fn update( &mut self, insertion: impl IntoIterator<Item = R>, deletion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M>

First call of update should return an inverse model of the current state. Subsequent calls should return an inverse model that represent an incremental update.

Provided Methods§

fn insert( &mut self, insertion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M>

Provided methods

fn delete( &mut self, deletion: impl IntoIterator<Item = R>, ) -> InverseModel<OA, P, OT, M>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

§

impl<'p, A, OA, T, ME> RuleMonitorLike<A, OA, T, IbVecMonoid<(OA, Predicate<<ME as MatchEncoder<'p>>::P>)>, <ME as MatchEncoder<'p>>::P, Rule<<ME as MatchEncoder<'p>>::P, A>> for IbRuleMonitor<'p, A, ME>
where A: Action<Single>, OA: Action<T, S = A>, T: Dimension, ME: MatchEncoder<'p>,

§

impl<'p, A, OA, T, ME, RS, S> RuleMonitorLike<A, OA, T, MapMonoid<OA, Predicate<<ME as MatchEncoder<'p>>::P>, S>, <ME as MatchEncoder<'p>>::P, Rule<<ME as MatchEncoder<'p>>::P, A>> for FastRuleMonitor<'p, A, ME, RS>
where A: Action<Single>, OA: Action<T, S = A>, T: Dimension, ME: MatchEncoder<'p>, RS: RuleStore<A, <ME as MatchEncoder<'p>>::P>, S: BuildHasher + Clone + Default,

§

impl<'p, A, OA, T, ME, S> RuleMonitorLike<A, OA, T, MapMonoid<OA, Predicate<<ME as MatchEncoder<'p>>::P>, S>, <ME as MatchEncoder<'p>>::P, Rule<<ME as MatchEncoder<'p>>::P, A>> for IbRuleMonitor<'p, A, ME>
where A: Action<Single>, OA: Action<T, S = A>, T: Dimension, ME: MatchEncoder<'p>, S: BuildHasher + Clone + Default,