Rule

Trait Rule 

Source
pub trait Rule {
    // Required methods
    fn evaluate(&self, context: &RuleContext) -> RuleResult<bool>;
    fn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>;
    fn children(&self) -> &[Box<dyn Rule>];
    fn children_mut(&mut self) -> &mut Vec<Box<dyn Rule>>;
    fn add_child(&mut self, child: Box<dyn Rule>) -> RuleResult<()>;

    // Provided methods
    fn add_children(&mut self, children: Vec<Box<dyn Rule>>) -> RuleResult<()> { ... }
    fn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool> { ... }
}
Expand description

Core trait for rule execution with proper error handling

Required Methods§

Source

fn evaluate(&self, context: &RuleContext) -> RuleResult<bool>

Evaluate if this rule should execute

Source

fn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>

Execute the rule with proper error handling

Source

fn children(&self) -> &[Box<dyn Rule>]

Get immutable reference to children

Source

fn children_mut(&mut self) -> &mut Vec<Box<dyn Rule>>

Get mutable reference to children

Source

fn add_child(&mut self, child: Box<dyn Rule>) -> RuleResult<()>

Add a child rule

Provided Methods§

Source

fn add_children(&mut self, children: Vec<Box<dyn Rule>>) -> RuleResult<()>

Add multiple child rules

Source

fn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool>

Execute the complete rule lifecycle: evaluate, execute, and run children

Implementors§