Trait Program

Source
pub trait Program<'p> {
    // Required methods
    fn extensional_preds(&'p self) -> impl Iterator<Item = &'p PredicateSym<'p>>;
    fn intensional_preds(&'p self) -> impl Iterator<Item = &'p PredicateSym<'p>>;
    fn rules(
        &'p self,
        sym: &'p PredicateSym<'p>,
    ) -> impl Iterator<Item = &'p Clause<'p>>;
}
Expand description

Represents a program. extensional_preds and intensional_preds are disjoint.

Required Methods§

Source

fn extensional_preds(&'p self) -> impl Iterator<Item = &'p PredicateSym<'p>>

Returns predicates for extensional DB. May return an empty iterator.

Source

fn intensional_preds(&'p self) -> impl Iterator<Item = &'p PredicateSym<'p>>

Returns predicates for intensional DB. May return an empty iterator.

Source

fn rules( &'p self, sym: &'p PredicateSym<'p>, ) -> impl Iterator<Item = &'p Clause<'p>>

Maps predicates of intensional DB to rules. May return an empty iterator.

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§

Source§

impl<'p> Program<'p> for SimpleProgram<'p>

Source§

impl<'p> Program<'p> for SimpleStratifiedProgram<'p>