Skip to main content

IncrementalEvaluator

Struct IncrementalEvaluator 

Source
pub struct IncrementalEvaluator { /* private fields */ }
Expand description

Wraps SemiNaiveEvaluator to support incremental updates: add new base facts without discarding previously derived knowledge.

Implementations§

Source§

impl IncrementalEvaluator

Source

pub fn new(rules: Vec<Rule>, initial_edb: Edb) -> Result<Self, QueryError>

Create and immediately evaluate the initial EDB.

Source

pub fn add_facts( &mut self, new_facts: Vec<Fact>, ) -> Result<EvalStats, QueryError>

Add new base facts to the EDB and propagate their consequences into the IDB.

Only the newly added facts seed the next Δ, so previously computed derived facts are never recomputed from scratch.

Source

pub fn query(&self, predicate: &str) -> Vec<Fact>

Query the current IDB for all facts of the given predicate.

Source

pub fn total_derived_facts(&self) -> usize

Total number of derived facts currently in the IDB.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.