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