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 { rule_name: String, delay_ms: u64 },
46
47 None,
49}
50
51#[derive(Debug, Clone, Default)]
53pub struct ActionResults {
54 pub results: Vec<ActionResult>,
55}
56
57impl ActionResults {
58 pub fn new() -> Self {
59 Self {
60 results: Vec::new(),
61 }
62 }
63
64 pub fn add(&mut self, result: ActionResult) {
65 self.results.push(result);
66 }
67
68 pub fn is_empty(&self) -> bool {
69 self.results.is_empty()
70 }
71
72 pub fn len(&self) -> usize {
73 self.results.len()
74 }
75}