coolrule

Crates.iocoolrule
lib.rscoolrule
version0.1.0
sourcesrc
created_at2023-08-18 15:54:04.737785
updated_at2023-08-18 15:54:04.737785
descriptionA boolean expression evaluator. A Rust port of boolrule.
homepagehttps://github.com/healeycodes/coolrule
repositoryhttps://github.com/healeycodes/coolrule
max_upload_size
id947940
size40,100
Andrew Healey (healeycodes)

documentation

README

Rust

coolrule

Boolean expression evaluation engine (a port of boolrule to Rust).

// Without context
let expr = coolrule::new("1 in (1, 2, 3) or 2 > 3")?;
let test = expr.test()?; // true

// With context
let expr = coolrule::new("x ∉ (5, 6, 7)")?;
let test = expr.test_with_context(
    HashMap::from([(vec!["x"], Value::Number(8.0))])
)?; // true

The boolrule test suite has also been ported (and passes) see lib.rs.

Expressions are parsed via PEG parser combinators (powered by pom).

It's around 3x faster than the Python version (before any kind of optimization work).

I'm still learning how to write idiomatic Rust so if you see anything strange please let me know!

Tests

cargo test

Commit count: 12

cargo fmt