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
pub trait System { fn update(&self); } pub struct Engine { systems: Vec<Box<dyn System>> } impl Engine { pub fn new() -> Self { Engine { systems: Vec::new() } } pub fn add_system<T: System + 'static>(&mut self, sys: T) { self.systems.push(Box::new(sys)); } pub fn update(&self) { for sys in self.systems.iter() { sys.update(); } } }