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>,
}