Crate ascent

Source
Expand description

Ascent enables writing logic programs in the style of Datalog in Rust.

See the documentation for ascent, one of the main macros of this crate, for more information.

Re-exports§

pub use dashmap;
pub use rayon;
pub use boxcar;
pub use hashbrown;

Modules§

aggregators
This module provides aggregators that can be used in Ascent rules.
internal
Provides definitions required for the ascent macro(s), plus traits that custom relations need to implement.
lattice
Defines the Lattice trait and provides implementations for standard types

Macros§

ascent
The main macro of the ascent library. Allows writing logical inference rules similar to Datalog.
ascent_par
Similar to ascent, allows writing logic programs in Rust.
ascent_run
Like ascent, except that the result of an ascent_run invocation is a value containing all the relations defined inside the macro body, and computed to a fixed point.
ascent_run_par
The parallelized version of ascent_run
ascent_source
This macro allows writing Ascent code that can later be included in an actual Ascent program.

Structs§

Dual
A wrapper type that swaps (<= and >=) for PartialOrds, (meet and join) for Lattices, and (top and bottom) for BoundedLattices.

Traits§

Lattice
A Lattice is a PartialOrd where each pair of elements has a least upper bound (join) and a greatest lower bound (meet)