1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::objects::{Object, Objects, WithHandle};
use super::State;
impl State for Objects {
type Command = Operation;
type Event = InsertObject;
fn decide(&self, command: Self::Command, events: &mut Vec<Self::Event>) {
let Operation::InsertObject { object } = command;
events.push(InsertObject { object });
}
fn evolve(&mut self, event: &Self::Event) {
event.object.clone().insert(self);
}
}
#[derive(Debug)]
pub enum Operation {
InsertObject {
object: Object<WithHandle>,
},
}
#[derive(Clone, Debug)]
pub struct InsertObject {
pub object: Object<WithHandle>,
}