From 733659f8ce979eed505af84cdccf9ec0ca354fd0 Mon Sep 17 00:00:00 2001
From: Manuel Thalmann <m@nuth.ch>
Date: Sat, 12 Apr 2025 09:35:46 +0200
Subject: [PATCH] Add logic for requesting reviews

---
 blog/src/lib.rs | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/blog/src/lib.rs b/blog/src/lib.rs
index dd6bd6a..0a3a4b3 100644
--- a/blog/src/lib.rs
+++ b/blog/src/lib.rs
@@ -18,10 +18,30 @@ impl Post {
     pub fn content(&self) -> &str {
         ""
     }
+
+    pub fn request_review(&mut self) {
+        if let Some(s) = self.state.take() {
+            self.state = Some(s.request_review())
+        }
+    }
 }
 
-trait State {}
+trait State {
+    fn request_review(self: Box<Self>) -> Box<dyn State>;
+}
 
 struct Draft {}
 
-impl State for Draft {}
+impl State for Draft {
+    fn request_review(self: Box<Self>) -> Box<dyn State> {
+        Box::new(PendingReview {})
+    }
+}
+
+struct PendingReview {}
+
+impl State for PendingReview {
+    fn request_review(self: Box<Self>) -> Box<dyn State> {
+        self
+    }
+}