rust_rule_engine/rete/
action_result.rs1use super::FactHandle;
7
8#[derive(Debug, Clone)]
11pub enum ActionResult {
12 Retract(FactHandle),
14
15 RetractByType(String),
17
18 Update(FactHandle),
20
21 ActivateAgendaGroup(String),
23
24 InsertFact {
26 fact_type: String,
27 data: super::TypedFacts,
28 },
29
30 InsertLogicalFact {
32 fact_type: String,
33 data: super::TypedFacts,
34 rule_name: String,
35 premises: Vec<FactHandle>,
36 },
37
38 CallFunction {
40 function_name: String,
41 args: Vec<String>,
42 },
43
44 ScheduleRule {
46 rule_name: String,
47 delay_ms: u64,
48 },
49
50 None,
52}
53
54#[derive(Debug, Clone, Default)]
56pub struct ActionResults {
57 pub results: Vec<ActionResult>,
58}
59
60impl ActionResults {
61 pub fn new() -> Self {
62 Self {
63 results: Vec::new(),
64 }
65 }
66
67 pub fn add(&mut self, result: ActionResult) {
68 self.results.push(result);
69 }
70
71 pub fn is_empty(&self) -> bool {
72 self.results.is_empty()
73 }
74
75 pub fn len(&self) -> usize {
76 self.results.len()
77 }
78}