Skip to main content

made_core/value_objects/
critique_feedback.rs

1use std::fmt;
2use std::ops::Deref;
3
4use serde::{Deserialize, Serialize};
5
6/// Peer-review feedback returned by an agent.
7#[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}