diff options
Diffstat (limited to 'oop/src')
-rw-r--r-- | oop/src/lib.rs | 41 | ||||
-rw-r--r-- | oop/src/main.rs | 56 |
2 files changed, 0 insertions, 97 deletions
diff --git a/oop/src/lib.rs b/oop/src/lib.rs deleted file mode 100644 index 91ef2e8..0000000 --- a/oop/src/lib.rs +++ /dev/null @@ -1,41 +0,0 @@ -pub trait Draw { - fn draw(&self); -} - -pub struct Screen { - pub components: Vec<Box<dyn Draw>>, -} - -impl Screen { - pub fn run(&self) { - for component in self.components.iter() { - component.draw(); - } - } -} - -pub struct Button { - pub width: u32, - pub height: u32, - pub label: String, -} - -impl Draw for Button { - fn draw(&self) { - dbg!("drew button"); - } -} - -pub struct SelectBox { - pub width: u32, - pub height: u32, - pub options: Vec<String>, -} - -impl Draw for SelectBox { - fn draw(&self) { - dbg!("drew select box"); - } -} - - diff --git a/oop/src/main.rs b/oop/src/main.rs deleted file mode 100644 index e92c07c..0000000 --- a/oop/src/main.rs +++ /dev/null @@ -1,56 +0,0 @@ -use oop::{Screen, Button, SelectBox}; - -pub struct AveragedCollection { - list: Vec<i32>, - average: f64, -} - -impl AveragedCollection { - pub fn add(&mut self, value: i32) { - self.list.push(value); - self.update_average(); - } - - pub fn remove(&mut self) -> Option<i32> { - let result = self.list.pop(); - match result { - Some(value) => { - self.update_average(); - Some(value) - }, - None => None, - } - } - - pub fn average(&self) -> f64 { - self.average - } - - fn update_average(&mut self) { - let total: i32 = self.list.iter().sum(); - self.average = total as f64 / self.list.len() as f64; - } -} - -fn main() { - let screen = Screen { - components: vec![ - Box::new(SelectBox { - width: 75, - height: 10, - options: vec![ - String::from("Yes"), - String::from("Maybe"), - String::from("No") - ], - }), - Box::new(Button { - width: 50, - height: 10, - label: String::from("OK"), - }), - ], - }; - - screen.run(); -} |