vdf_reader/entry/
statement.rs1use super::Entry;
2use serde_core::{Deserialize, Deserializer, Serialize, Serializer};
3use std::borrow::Cow;
4use std::ops::Deref;
5
6#[derive(Clone, PartialEq, Eq, Debug, Default)]
8pub struct Statement(String);
9
10impl<'de> Deserialize<'de> for Statement {
11 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
12 where
13 D: Deserializer<'de>,
14 {
15 String::deserialize(deserializer).map(Statement)
16 }
17}
18
19impl Serialize for Statement {
20 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
21 where
22 S: Serializer,
23 {
24 self.0.serialize(serializer)
25 }
26}
27
28impl From<Cow<'_, str>> for Statement {
29 fn from(value: Cow<'_, str>) -> Self {
30 Statement(value.into())
31 }
32}
33
34impl From<Statement> for Entry {
35 fn from(statement: Statement) -> Self {
36 Entry::Statement(statement)
37 }
38}
39impl From<&'_ str> for Statement {
40 fn from(value: &str) -> Statement {
41 Statement(value.into())
42 }
43}
44
45impl From<String> for Statement {
46 fn from(value: String) -> Statement {
47 Statement(value)
48 }
49}
50
51impl From<Statement> for String {
52 fn from(value: Statement) -> Self {
53 value.0
54 }
55}
56
57impl Deref for Statement {
58 type Target = str;
59
60 fn deref(&self) -> &Self::Target {
61 &self.0
62 }
63}