You can't really have State pattern w/o inheritance. At very least it becomes very awkward.
https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.ht...
We end up with three types of post, Post, DraftPost and PendingReviewPost, and our state pattern is implemented by the type transitions implemented in these three types. When you call Post::new() you get a DraftPost, and the only way to get a Post from that is to request the review, obtaining a PendingReviewPost and have somebody accept it to get the Post from there.