summaryrefslogtreecommitdiff
path: root/oop/src
diff options
context:
space:
mode:
Diffstat (limited to 'oop/src')
-rw-r--r--oop/src/lib.rs41
-rw-r--r--oop/src/main.rs56
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();
-}