Expand description
§Rust Rule Engine - GRL Edition
A high-performance rule engine for Rust with GRL (Grule Rule Language) support, featuring method calls, object interactions, and complex condition evaluation.
§Features
- 🔥 GRL Support: Full Grule-compatible syntax
 - 🎯 Method Calls: 
$Object.method(args)and property access - 📊 Knowledge Base: Centralized rule management with salience
 - 💾 Working Memory: Facts system for complex object interactions
 - ⚡ High Performance: Optimized execution with cycle detection
 - 🔄 Arithmetic: Complex calculations in conditions and actions
 - 🛡️ Type Safety: Rust’s type system ensures runtime safety
 
§Quick Start
use rust_rule_engine::*;
fn main() -> Result<()> {
    // Create Knowledge Base
    let kb = KnowledgeBase::new("Demo");
     
    // Define GRL rule
    let rule = r#"
    rule "AgeCheck" salience 10 {
        when
            User.Age >= 18 && User.Country == "US"
        then
            User.IsAdult = true;
            User.DiscountRate = 0.10;
    }
    "#;
     
    // Parse and add rule
    let rules = GRLParser::parse_rules(rule)?;
    let parsed_rule = rules.into_iter().next().unwrap();
    kb.add_rule(parsed_rule)?;
     
    // Create engine
    let mut engine = RustRuleEngine::new(kb);
     
    // Create facts
    let facts = Facts::new();
    let user = FactHelper::create_user("john", 25, "john@email.com", "US", false);
    facts.add_value("User", user)?;
     
    // Execute rules
    let result = engine.execute(&facts)?;
    println!("Rules fired: {}", result.rules_fired);
     
    Ok(())
}§Advanced Features
§Method Calls and Object Interactions
let speedup_rule = r#"
rule "SpeedUp" salience 10 {
    when
        $TestCar : TestCarClass( speedUp == true && speed < maxSpeed )
    then
        $TestCar.setSpeed($TestCar.Speed + $TestCar.SpeedIncrement);
        update($TestCar);
}
"#;§E-commerce Rules
let discount_rule = r#"
rule "PremiumDiscount" salience 20 {
    when
        Customer.Membership == "premium" && Order.Total > 100
    then
        Order.DiscountRate = 0.15;
        Order.FreeShipping = true;
}
"#;§Core Components
KnowledgeBase: Manages collections of rules with metadataFacts: Working memory for data objects and rule evaluationRustRuleEngine: Executes rules with configurable optionsGRLParser: Parses Grule Rule Language syntaxFactHelper: Utility functions for creating data objectsValue: Flexible data type system supporting objects, arrays, primitives
Re-exports§
pub use errors::Result;pub use errors::RuleEngineError;pub use types::ActionType;pub use types::LogicalOperator;pub use types::Operator;pub use types::Value;pub use engine::engine::EngineConfig;pub use engine::engine::GruleExecutionResult;pub use engine::engine::RustRuleEngine;pub use engine::facts::FactHelper;pub use engine::facts::Facts;pub use engine::knowledge_base::KnowledgeBase;pub use engine::rule::Condition;pub use engine::rule::ConditionGroup;pub use engine::rule::Rule;pub use parser::grl::GRLParser;
Modules§
- engine
 - Rule execution engine and related components
 - errors
 - Error types and result handling
 - parser
 - Rule parsing and language support
 - streaming
 - Streaming rule engine for real-time event processing Rule Streaming Engine - Real-time Event Processing
 - types
 - Core type definitions for values, operators, and actions
 
Macros§
- impl_
fact  - Macro to implement Fact trait easily
 
Structs§
- Rule
Engine Builder  - Builder pattern for creating a RustRuleEngine with various configurations