pub struct BestFirstRule { /* private fields */ }Expand description
BestFirstRule represents a rule that executes the first child that evaluates to true. If no child evaluates to true, it tries siblings until one succeeds.
§Example
use dredd_rs::rule::*;
let mut rule = BestFirstRule::new();
rule.set_eval_fn(|context| {
context.get_bool("should_execute")
});
rule.set_execute_fn(|context| {
context.set_bool("executed", true);
Ok(())
});
let mut context = RuleContext::new();
context.set_bool("should_execute", true);
let result = rule.fire(&mut context).unwrap();
assert!(result);Implementations§
Source§impl BestFirstRule
impl BestFirstRule
Sourcepub fn set_eval_fn<F>(&mut self, f: F) -> &mut Self
pub fn set_eval_fn<F>(&mut self, f: F) -> &mut Self
Set the evaluation function
Sourcepub fn set_pre_execute_fn<F>(&mut self, f: F) -> &mut Self
pub fn set_pre_execute_fn<F>(&mut self, f: F) -> &mut Self
Set the pre-execution function
Sourcepub fn set_execute_fn<F>(&mut self, f: F) -> &mut Self
pub fn set_execute_fn<F>(&mut self, f: F) -> &mut Self
Set the execution function
Sourcepub fn set_post_execute_fn<F>(&mut self, f: F) -> &mut Self
pub fn set_post_execute_fn<F>(&mut self, f: F) -> &mut Self
Set the post-execution function
Trait Implementations§
Source§impl Default for BestFirstRule
impl Default for BestFirstRule
Source§impl Rule for BestFirstRule
impl Rule for BestFirstRule
Source§fn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool>
fn fire(&mut self, context: &mut RuleContext) -> RuleResult<bool>
Custom fire implementation for BestFirstRule that implements best-first execution
Source§fn evaluate(&self, context: &RuleContext) -> RuleResult<bool>
fn evaluate(&self, context: &RuleContext) -> RuleResult<bool>
Evaluate if this rule should execute
Source§fn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>
fn execute(&mut self, context: &mut RuleContext) -> RuleResult<()>
Execute the rule with proper error handling
Source§fn 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
Auto Trait Implementations§
impl Freeze for BestFirstRule
impl !RefUnwindSafe for BestFirstRule
impl !Send for BestFirstRule
impl !Sync for BestFirstRule
impl Unpin for BestFirstRule
impl !UnwindSafe for BestFirstRule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more