From 67cdcc2e12118becb823e20a40cc2687f2b8425a Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Wed, 27 Mar 2019 15:32:37 -0400 Subject: Started Rust in Action MEAP. --- blog/src/lib.rs | 127 ------------------------------------------------------- blog/src/main.rs | 36 ---------------- 2 files changed, 163 deletions(-) delete mode 100644 blog/src/lib.rs delete mode 100644 blog/src/main.rs (limited to 'blog/src') diff --git a/blog/src/lib.rs b/blog/src/lib.rs deleted file mode 100644 index 8436a36..0000000 --- a/blog/src/lib.rs +++ /dev/null @@ -1,127 +0,0 @@ -//pub struct Post { -// state: Option>, -// content: String, -//} -// -//impl Post { -// pub fn new() -> Post { -// Post { -// state: Some(Box::new(Draft {})), -// content: String::new(), -// } -// } -// -// pub fn add_text(&mut self, text: &str) { -// self.content.push_str(text); -// } -// -// pub fn content(&self) -> &str { -// self.state.as_ref().unwrap().content(&self) -// } -// -// pub fn request_review(&mut self) { -// if let Some(s) = self.state.take() { -// self.state = Some(s.request_review()) -// } -// } -// -// pub fn approve(&mut self) { -// if let Some(s) = self.state.take() { -// self.state = Some(s.approve()) -// } -// } -//} -// -//trait State { -// fn request_review(self: Box) -> Box; -// fn approve(self: Box) -> Box; -// fn content<'a>(&self, post: &'a Post) -> &'a str { -// "" -// } -//} -// -//struct Draft {} -// -//impl State for Draft { -// fn request_review(self: Box) -> Box { -// Box::new(PendingReview {}) -// } -// -// fn approve(self: Box) -> Box { -// self -// } -//} -// -//struct PendingReview {} -// -//impl State for PendingReview { -// fn request_review(self: Box) -> Box { -// self -// } -// -// fn approve(self: Box) -> Box { -// Box::new(Published {}) -// } -//} -// -//struct Published {} -// -//impl State for Published { -// fn request_review(self: Box) -> Box { -// self -// } -// -// fn approve(self: Box) -> Box { -// self -// } -// -// fn content<'a>(&self, post: &'a Post) -> &'a str { -// &post.content -// } -//} - - - -pub struct Post { - content: String, -} - -pub struct DraftPost { - content: String, -} - -pub struct PendingReviewPost { - content: String, -} - -impl Post { - pub fn new() -> DraftPost { - DraftPost { - content: String::new(), - } - } - - pub fn content(&self) -> &str { - &self.content - } -} - -impl DraftPost { - pub fn add_text(&mut self, text: &str) { - self.content.push_str(text); - } - - pub fn request_review(self) -> PendingReviewPost { - PendingReviewPost { - content: self.content, - } - } -} - -impl PendingReviewPost { - pub fn approve(self) -> Post { - Post { - content: self.content, - } - } -} diff --git a/blog/src/main.rs b/blog/src/main.rs deleted file mode 100644 index c976cd9..0000000 --- a/blog/src/main.rs +++ /dev/null @@ -1,36 +0,0 @@ -use blog::Post; - -fn main() { -// let mut post = Post::new(); -// -// post.add_text("salad"); -// assert_eq!("", post.content()); -// -// post.request_review(); -// assert_eq!("", post.content()); -// -// post.approve(); -// assert_eq!("salad", post.content()); - - - -// let mut post = Post::new(); -// post.add_text("salad"); -// assert_eq!("", post.content()); - - - - let mut post = Post::new(); - - post.add_text("salad"); - let post = post.request_review(); - let post = post.approve(); - - assert_eq!("salad", post.content()); - - - - - - println!("Done."); -} -- cgit v1.2.3