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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| pub trait Draw { fn draw(&self); } pub struct Screen { pub componets: Vec<Box<dyn Draw>>, }
impl Screen { pub fn run(&self) { for comp in self.componets.iter() { comp.draw(); } } } pub struct Button { pub width: u32, pub height: u32, pub label: String, } impl draw for button { fn draw(&self) { println!("draw button,width = {},height = {},label = {}",self.width,self.height,,self.label); } }
pub struct SelectBox { pub width: u32, pub height: u32, pub option: Vec<String>, }
impl draw for SelectBox { fn draw(&self) { println!("draw SelectBox,width = {},height = {},option = {:?}",self.width,self.height,,self.option); } } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2+2,4); } }
|