stellar_xdr/generated/
trust_line_entry_ext.rs1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
30#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32#[cfg_attr(
33 all(feature = "serde", feature = "alloc"),
34 serde_with::serde_as,
35 derive(serde::Serialize, serde::Deserialize),
36 serde(rename_all = "snake_case")
37)]
38#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39#[allow(clippy::large_enum_variant)]
40pub enum TrustLineEntryExt {
41 V0,
42 V1(TrustLineEntryV1),
43}
44
45#[cfg(feature = "alloc")]
46impl Default for TrustLineEntryExt {
47 fn default() -> Self {
48 Self::V0
49 }
50}
51
52impl TrustLineEntryExt {
53 const _VARIANTS: &[i32] = &[0, 1];
54 pub const VARIANTS: [i32; Self::_VARIANTS.len()] = {
55 let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
56 let mut i = 1;
57 while i < Self::_VARIANTS.len() {
58 arr[i] = Self::_VARIANTS[i];
59 i += 1;
60 }
61 arr
62 };
63 const _VARIANTS_STR: &[&str] = &["V0", "V1"];
64 pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
65 let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
66 let mut i = 1;
67 while i < Self::_VARIANTS_STR.len() {
68 arr[i] = Self::_VARIANTS_STR[i];
69 i += 1;
70 }
71 arr
72 };
73
74 #[must_use]
75 pub const fn name(&self) -> &'static str {
76 match self {
77 Self::V0 => "V0",
78 Self::V1(_) => "V1",
79 }
80 }
81
82 #[must_use]
83 pub const fn discriminant(&self) -> i32 {
84 #[allow(clippy::match_same_arms)]
85 match self {
86 Self::V0 => 0,
87 Self::V1(_) => 1,
88 }
89 }
90
91 #[must_use]
92 pub const fn variants() -> [i32; Self::_VARIANTS.len()] {
93 Self::VARIANTS
94 }
95}
96
97impl Name for TrustLineEntryExt {
98 #[must_use]
99 fn name(&self) -> &'static str {
100 Self::name(self)
101 }
102}
103
104impl Discriminant<i32> for TrustLineEntryExt {
105 #[must_use]
106 fn discriminant(&self) -> i32 {
107 Self::discriminant(self)
108 }
109}
110
111impl Variants<i32> for TrustLineEntryExt {
112 fn variants() -> slice::Iter<'static, i32> {
113 Self::VARIANTS.iter()
114 }
115}
116
117impl Union<i32> for TrustLineEntryExt {}
118
119impl ReadXdr for TrustLineEntryExt {
120 #[cfg(feature = "std")]
121 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
122 r.with_limited_depth(|r| {
123 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
124 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
125 let v = match dv {
126 0 => Self::V0,
127 1 => Self::V1(TrustLineEntryV1::read_xdr(r)?),
128 #[allow(unreachable_patterns)]
129 _ => return Err(Error::Invalid),
130 };
131 Ok(v)
132 })
133 }
134}
135
136impl WriteXdr for TrustLineEntryExt {
137 #[cfg(feature = "std")]
138 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
139 w.with_limited_depth(|w| {
140 self.discriminant().write_xdr(w)?;
141 #[allow(clippy::match_same_arms)]
142 match self {
143 Self::V0 => ().write_xdr(w)?,
144 Self::V1(v) => v.write_xdr(w)?,
145 };
146 Ok(())
147 })
148 }
149}