use crate::canvas::{Event, Geometry, Size}; pub trait Program { fn update(&mut self, _event: Event, _bounds: Size) -> Option { None } fn draw(&self, bounds: Size) -> Vec; } impl Program for &mut T where T: Program, { fn update(&mut self, event: Event, bounds: Size) -> Option { T::update(self, event, bounds) } fn draw(&self, bounds: Size) -> Vec { T::draw(self, bounds) } }