summaryrefslogtreecommitdiff
path: root/oop
diff options
context:
space:
mode:
authorAdam Carpenter <53hornet@gmail.com>2019-03-27 15:32:37 -0400
committerAdam Carpenter <53hornet@gmail.com>2019-03-27 15:32:37 -0400
commit67cdcc2e12118becb823e20a40cc2687f2b8425a (patch)
treeed92c3234b89079e6d4cf36f5e80c5ffa79def48 /oop
parente25482fca375d318a39c3b54db396b0db6e0b263 (diff)
downloadlearning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz
learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip
Started Rust in Action MEAP.
Diffstat (limited to 'oop')
-rw-r--r--oop/Cargo.lock4
-rw-r--r--oop/Cargo.toml7
-rw-r--r--oop/src/lib.rs41
-rw-r--r--oop/src/main.rs56
4 files changed, 0 insertions, 108 deletions
diff --git a/oop/Cargo.lock b/oop/Cargo.lock
deleted file mode 100644
index fd3ef4a..0000000
--- a/oop/Cargo.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-[[package]]
-name = "oop"
-version = "0.1.0"
-
diff --git a/oop/Cargo.toml b/oop/Cargo.toml
deleted file mode 100644
index 28311ff..0000000
--- a/oop/Cargo.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[package]
-name = "oop"
-version = "0.1.0"
-authors = ["Adam Carpenter <53hornet@gmail.com>"]
-edition = "2018"
-
-[dependencies]
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();
-}