| pub struct Post { |
| content: String, |
| } |
| |
| pub struct DraftPost { |
| 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, |
| } |
| } |
| } |
| |
| pub struct PendingReviewPost { |
| content: String, |
| } |
| |
| impl PendingReviewPost { |
| pub fn approve(self) -> Post { |
| Post { |
| content: self.content, |
| } |
| } |
| } |