use t1::Post;
fn main() {
let mut blog = Post::new();
blog.add_text("这是发布的信息!");
let blog = blog.request_review();
let blog = blog.approve();
println!("--------------------------");
println!("发布的信息是 : {}", blog.content());
let blog = blog.unapprove();
let mut blog = blog.reject();
blog.edit("信息修改了。");
let blog = blog.request_review();
let blog = blog.approve();
let blog_content = blog.content();
println!("修改后的内容: {}", blog_content);
}
pub struct Post {
content: String,
}
pub struct PostDraft {
content: String,
}
pub struct PostReview {
content: String,
}
impl Post {
pub fn new() -> PostDraft {
PostDraft {
content: String::new(),
}
}
pub fn content(&self) -> &String {
&self.content
}
pub fn unapprove(self) -> PostReview {
PostReview {
content: self.content,
}
}
}
impl PostDraft {
pub fn request_review(self) -> PostReview {
PostReview {
content: self.content,
}
}
pub fn add_text(&mut self, content: &str) {
self.content.push_str(content);
}
pub fn edit(&mut self, content: &str) {
self.content.clear();
self.add_text(content);
}
}
impl PostReview {
pub fn approve(self) -> Post {
Post {
content: self.content,
}
}
pub fn reject(self) -> PostDraft {
PostDraft {
content: self.content,
}
}
}