Skip to main content

stellar_xdr/generated/
data_value.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// DataValue is an XDR Typedef defined as:
5///
6/// ```text
7/// typedef opaque DataValue<64>;
8/// ```
9///
10#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
11#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
12#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13#[cfg_attr(
14    all(feature = "serde", feature = "alloc"),
15    serde_with::serde_as,
16    derive(serde::Serialize, serde::Deserialize),
17    serde(rename_all = "snake_case")
18)]
19#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20#[derive(Debug)]
21pub struct DataValue(pub BytesM<64>);
22
23impl From<DataValue> for BytesM<64> {
24    #[must_use]
25    fn from(x: DataValue) -> Self {
26        x.0
27    }
28}
29
30impl From<BytesM<64>> for DataValue {
31    #[must_use]
32    fn from(x: BytesM<64>) -> Self {
33        DataValue(x)
34    }
35}
36
37impl AsRef<BytesM<64>> for DataValue {
38    #[must_use]
39    fn as_ref(&self) -> &BytesM<64> {
40        &self.0
41    }
42}
43
44impl ReadXdr for DataValue {
45    #[cfg(feature = "std")]
46    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47        r.with_limited_depth(|r| {
48            let i = BytesM::<64>::read_xdr(r)?;
49            let v = DataValue(i);
50            Ok(v)
51        })
52    }
53}
54
55impl WriteXdr for DataValue {
56    #[cfg(feature = "std")]
57    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
58        w.with_limited_depth(|w| self.0.write_xdr(w))
59    }
60}
61
62impl Deref for DataValue {
63    type Target = BytesM<64>;
64    fn deref(&self) -> &Self::Target {
65        &self.0
66    }
67}
68
69impl From<DataValue> for Vec<u8> {
70    #[must_use]
71    fn from(x: DataValue) -> Self {
72        x.0 .0
73    }
74}
75
76impl TryFrom<Vec<u8>> for DataValue {
77    type Error = Error;
78    fn try_from(x: Vec<u8>) -> Result<Self, Error> {
79        Ok(DataValue(x.try_into()?))
80    }
81}
82
83#[cfg(feature = "alloc")]
84impl TryFrom<&Vec<u8>> for DataValue {
85    type Error = Error;
86    fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
87        Ok(DataValue(x.try_into()?))
88    }
89}
90
91impl AsRef<Vec<u8>> for DataValue {
92    #[must_use]
93    fn as_ref(&self) -> &Vec<u8> {
94        &self.0 .0
95    }
96}
97
98impl AsRef<[u8]> for DataValue {
99    #[cfg(feature = "alloc")]
100    #[must_use]
101    fn as_ref(&self) -> &[u8] {
102        &self.0 .0
103    }
104    #[cfg(not(feature = "alloc"))]
105    #[must_use]
106    fn as_ref(&self) -> &[u8] {
107        self.0 .0
108    }
109}