Expand description
§Rust Rule Engine v0.9.0 - Plugin System Edition
A high-performance rule engine for Rust with Plugin System, Built-in Utilities, GRL (Grule Rule Language) support, featuring modular architecture, extensive built-in functionality, method calls, object interactions, and complex condition evaluation.
§Features
- 🔌 Plugin System: Modular plugin architecture with lifecycle management
 - 🛠️ Built-in Plugin Suite: 44+ actions & 33+ functions for common operations
 - 🔥 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 with Plugins
use rust_rule_engine::*;
fn main() -> Result<()> {
    // Create Knowledge Base and Engine
    let kb = KnowledgeBase::new("Demo");
    let mut engine = RustRuleEngine::new(kb);
    let mut facts = Facts::new();
     
    // Set up data
    facts.set("user.age", Value::Number(25.0));
    facts.set("user.premium", Value::Boolean(false));
     
    // Define GRL rule
    let rule = r#"
    rule "PremiumUpgrade" salience 10 {
        when
            user.age >= 18 && user.premium == false
        then
            user.premium = true;
            user.discount = 0.1;
    }
    "#;
     
    // Parse and add rule to knowledge base
    let rules = GRLParser::parse_rules(rule)?;
    for r in rules {
        engine.knowledge_base().add_rule(r)?;
    }
     
    // Execute with facts
    let result = engine.execute(&facts)?;
    println!("User premium status: {:?}", facts.get("user.premium"));
     
    Ok(())
}Built-in Plugin Suite provides comprehensive functionality for common operations:
- String Utilities: 8 actions, 5 functions for text manipulation
 - Math Operations: 10 actions, 6 functions for calculations
 - Date/Time: 8 actions, 7 functions for temporal operations
 - Actions: CurrentDate, CurrentTime, FormatDate, ParseDate, AddDays, AddHours, DateDiff, IsWeekend
 - Functions: now, today, dayOfWeek, dayOfYear, year, month, day
 
§Validation (8 actions, 6 functions)
- Actions: ValidateEmail, ValidatePhone, ValidateUrl, ValidateRegex, ValidateRange, ValidateLength, ValidateNotEmpty, ValidateNumeric
 - Functions: isEmail, isPhone, isUrl, isNumeric, isEmpty, inRange
 
§Collections (10 actions, 9 functions)
- 
Actions: ArrayLength, ArrayPush, ArrayPop, ArraySort, ArrayFilter, ArrayMap, ArrayFind, ObjectKeys, ObjectValues, ObjectMerge
 - 
Functions: length, contains, first, last, reverse, join, slice, keys, values
// 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(()) }
 
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
 - plugins
 - Built-in plugin system for extended functionality
 - 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