File size: 496 Bytes
224e773
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#[derive(Debug, Clone)]
pub enum Action {
    SetFact(String, String),
    RemoveFact(String),
    Batch(Vec<Action>),
}

impl Action {
    pub fn apply(&self, world: &mut crate::WorldState) -> hyperkitty_core::Result<()> {
        match self {
            Action::SetFact(k, v) => { world.set(k.clone(), v.clone()); Ok(()) }
            Action::RemoveFact(k) => { world.facts.remove(k); Ok(()) }
            Action::Batch(acts) => { for a in acts { a.apply(world)?; } Ok(()) }
        }
    }
}