Draft
`content`는 빈 문자열입니다. 검토 요청을 받으면 `PendingReview`로 넘어갑니다.
사용자는 `Post`의 공개 메서드만 호출하고, 초안·검토·게시 규칙은 `State` 트레이트를 구현한 비공개 상태 객체가 맡습니다.
항상 `Draft` 상태 객체를 담은 게시물로 시작합니다.
본문은 저장하지만, 공개 여부는 상태가 결정합니다.
현재 상태 객체를 소비하고 다음 상태 객체로 교체합니다.
검토 대기 상태에서만 게시 상태로 의미 있게 전환됩니다.
`content`는 빈 문자열입니다. 검토 요청을 받으면 `PendingReview`로 넘어갑니다.
본문은 아직 숨깁니다. 승인되면 `Published` 객체를 반환합니다.
`content`를 오버라이드해 저장된 `post.content`를 반환합니다.
`self: Box<Self>`가 이전 상태를 소비하므로 `Post`는 새 상태만 보유합니다.
`Post::content`는 상태 객체의 `content(self)`로 판단을 넘깁니다.