Rust中的面向对象编程与宏
1. 状态模式在Rust中的实现
在处理博客文章的状态管理时,我们可以使用状态模式来封装文章在不同状态下的行为。
1.1 确保草稿文章内容为空
在文章处于草稿状态时,即使我们使用 add_text 方法添加了内容, content 方法也应该返回一个空字符串切片。目前,我们可以这样实现 content 方法:
impl Post {
// ---snip---
pub fn content(&self) -> &str {
""
}
}
1.2 请求审核改变文章状态
我们需要添加请求文章审核的功能,这会将文章的状态从 Draft 变为 PendingReview 。
impl Post {
// ---snip---
pub fn request_review(&mut self) {
if let Some(sm) = self.state.take() {
self.state = Some(sm.request_review())
}
}
}
trait State {
fn request_review(self: Bo
超级会员免费看
订阅专栏 解锁全文
758

被折叠的 条评论
为什么被折叠?



