vdf_reader/entry/
statement.rs

1use super::Entry;
2use serde_core::{Deserialize, Deserializer, Serialize, Serializer};
3use std::borrow::Cow;
4use std::ops::Deref;
5
6/// A statement.
7#[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}