stellar_xdr/generated/
sc_vec.rs1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4#[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 ScVec(pub VecM<ScVal>);
22
23impl From<ScVec> for VecM<ScVal> {
24 #[must_use]
25 fn from(x: ScVec) -> Self {
26 x.0
27 }
28}
29
30impl From<VecM<ScVal>> for ScVec {
31 #[must_use]
32 fn from(x: VecM<ScVal>) -> Self {
33 ScVec(x)
34 }
35}
36
37impl AsRef<VecM<ScVal>> for ScVec {
38 #[must_use]
39 fn as_ref(&self) -> &VecM<ScVal> {
40 &self.0
41 }
42}
43
44impl ReadXdr for ScVec {
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 = VecM::<ScVal>::read_xdr(r)?;
49 let v = ScVec(i);
50 Ok(v)
51 })
52 }
53}
54
55impl WriteXdr for ScVec {
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 ScVec {
63 type Target = VecM<ScVal>;
64 fn deref(&self) -> &Self::Target {
65 &self.0
66 }
67}
68
69impl From<ScVec> for Vec<ScVal> {
70 #[must_use]
71 fn from(x: ScVec) -> Self {
72 x.0 .0
73 }
74}
75
76impl TryFrom<Vec<ScVal>> for ScVec {
77 type Error = Error;
78 fn try_from(x: Vec<ScVal>) -> Result<Self, Error> {
79 Ok(ScVec(x.try_into()?))
80 }
81}
82
83#[cfg(feature = "alloc")]
84impl TryFrom<&Vec<ScVal>> for ScVec {
85 type Error = Error;
86 fn try_from(x: &Vec<ScVal>) -> Result<Self, Error> {
87 Ok(ScVec(x.try_into()?))
88 }
89}
90
91impl AsRef<Vec<ScVal>> for ScVec {
92 #[must_use]
93 fn as_ref(&self) -> &Vec<ScVal> {
94 &self.0 .0
95 }
96}
97
98impl AsRef<[ScVal]> for ScVec {
99 #[cfg(feature = "alloc")]
100 #[must_use]
101 fn as_ref(&self) -> &[ScVal] {
102 &self.0 .0
103 }
104 #[cfg(not(feature = "alloc"))]
105 #[must_use]
106 fn as_ref(&self) -> &[ScVal] {
107 self.0 .0
108 }
109}