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§
Sourcefn evaluate(&self, context: &RuleContext) -> RuleResult<bool>
fn evaluate(&self, context: &RuleContext) -> RuleResult<bool>
Evaluate if this rule should execute
Sourcefn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>
fn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>
Execute the rule with proper error handling
Sourcefn children_mut(&mut self) -> &mut Vec<Box<dyn Rule>>
fn children_mut(&mut self) -> &mut Vec<Box<dyn Rule>>
Get mutable reference to children
Provided Methods§
Sourcefn add_children(&mut self, children: Vec<Box<dyn Rule>>) -> RuleResult<()>
fn add_children(&mut self, children: Vec<Box<dyn Rule>>) -> RuleResult<()>
Add multiple child rules
Sourcefn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool>
fn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool>
Execute the complete rule lifecycle: evaluate, execute, and run children