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
use {Core, Error}; use addons; pub struct Mcu { pub core: Core, addons: Vec<Box<dyn addons::Addon>>, } impl Mcu { pub fn new(core: Core) -> Self { Mcu { core: core, addons: Vec::new(), } } pub fn attach(&mut self, addon: Box<dyn addons::Addon>) { self.addons.push(addon); } pub fn tick(&mut self) -> Result<(), Error> { self.core.tick()?; for addon in self.addons.iter_mut() { addon.tick(&mut self.core); } Ok(()) } }