Skip to content

🧮 Boolean expression evaluation engine. A Rust port of boolrule.

Notifications You must be signed in to change notification settings

healeycodes/coolrule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coolrule

Rust crates.io v1.0.0

My blog post: Porting Boolrule to Rust


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

About

🧮 Boolean expression evaluation engine. A Rust port of boolrule.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published