made_core/value_objects/
critique_feedback.rs1use std::fmt;
2use std::ops::Deref;
3
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(transparent)]
9pub struct CritiqueFeedback(String);
10
11impl CritiqueFeedback {
12 #[must_use]
13 pub fn new(raw: impl Into<String>) -> Self {
14 Self(raw.into())
15 }
16
17 #[must_use]
18 pub fn as_str(&self) -> &str {
19 &self.0
20 }
21}
22
23impl From<String> for CritiqueFeedback {
24 fn from(value: String) -> Self {
25 Self::new(value)
26 }
27}
28
29impl From<&str> for CritiqueFeedback {
30 fn from(value: &str) -> Self {
31 Self::new(value)
32 }
33}
34
35impl Deref for CritiqueFeedback {
36 type Target = str;
37
38 fn deref(&self) -> &Self::Target {
39 self.as_str()
40 }
41}
42
43impl fmt::Display for CritiqueFeedback {
44 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
45 formatter.write_str(self.as_str())
46 }
47}
48
49impl PartialEq<str> for CritiqueFeedback {
50 fn eq(&self, other: &str) -> bool {
51 self.as_str() == other
52 }
53}
54
55impl PartialEq<&str> for CritiqueFeedback {
56 fn eq(&self, other: &&str) -> bool {
57 self.as_str() == *other
58 }
59}