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(); -}  |