stellar_xdr/generated/
ledger_upgrade.rs1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
31#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33#[cfg_attr(
34 all(feature = "serde", feature = "alloc"),
35 serde_with::serde_as,
36 derive(serde::Serialize, serde::Deserialize),
37 serde(rename_all = "snake_case")
38)]
39#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40#[allow(clippy::large_enum_variant)]
41pub enum LedgerUpgrade {
42 Version(u32),
43 BaseFee(u32),
44 MaxTxSetSize(u32),
45 BaseReserve(u32),
46 Flags(u32),
47 Config(ConfigUpgradeSetKey),
48 MaxSorobanTxSetSize(u32),
49}
50
51#[cfg(feature = "alloc")]
52impl Default for LedgerUpgrade {
53 fn default() -> Self {
54 Self::Version(u32::default())
55 }
56}
57
58impl LedgerUpgrade {
59 const _VARIANTS: &[LedgerUpgradeType] = &[
60 LedgerUpgradeType::Version,
61 LedgerUpgradeType::BaseFee,
62 LedgerUpgradeType::MaxTxSetSize,
63 LedgerUpgradeType::BaseReserve,
64 LedgerUpgradeType::Flags,
65 LedgerUpgradeType::Config,
66 LedgerUpgradeType::MaxSorobanTxSetSize,
67 ];
68 pub const VARIANTS: [LedgerUpgradeType; Self::_VARIANTS.len()] = {
69 let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
70 let mut i = 1;
71 while i < Self::_VARIANTS.len() {
72 arr[i] = Self::_VARIANTS[i];
73 i += 1;
74 }
75 arr
76 };
77 const _VARIANTS_STR: &[&str] = &[
78 "Version",
79 "BaseFee",
80 "MaxTxSetSize",
81 "BaseReserve",
82 "Flags",
83 "Config",
84 "MaxSorobanTxSetSize",
85 ];
86 pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
87 let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
88 let mut i = 1;
89 while i < Self::_VARIANTS_STR.len() {
90 arr[i] = Self::_VARIANTS_STR[i];
91 i += 1;
92 }
93 arr
94 };
95
96 #[must_use]
97 pub const fn name(&self) -> &'static str {
98 match self {
99 Self::Version(_) => "Version",
100 Self::BaseFee(_) => "BaseFee",
101 Self::MaxTxSetSize(_) => "MaxTxSetSize",
102 Self::BaseReserve(_) => "BaseReserve",
103 Self::Flags(_) => "Flags",
104 Self::Config(_) => "Config",
105 Self::MaxSorobanTxSetSize(_) => "MaxSorobanTxSetSize",
106 }
107 }
108
109 #[must_use]
110 pub const fn discriminant(&self) -> LedgerUpgradeType {
111 #[allow(clippy::match_same_arms)]
112 match self {
113 Self::Version(_) => LedgerUpgradeType::Version,
114 Self::BaseFee(_) => LedgerUpgradeType::BaseFee,
115 Self::MaxTxSetSize(_) => LedgerUpgradeType::MaxTxSetSize,
116 Self::BaseReserve(_) => LedgerUpgradeType::BaseReserve,
117 Self::Flags(_) => LedgerUpgradeType::Flags,
118 Self::Config(_) => LedgerUpgradeType::Config,
119 Self::MaxSorobanTxSetSize(_) => LedgerUpgradeType::MaxSorobanTxSetSize,
120 }
121 }
122
123 #[must_use]
124 pub const fn variants() -> [LedgerUpgradeType; Self::_VARIANTS.len()] {
125 Self::VARIANTS
126 }
127}
128
129impl Name for LedgerUpgrade {
130 #[must_use]
131 fn name(&self) -> &'static str {
132 Self::name(self)
133 }
134}
135
136impl Discriminant<LedgerUpgradeType> for LedgerUpgrade {
137 #[must_use]
138 fn discriminant(&self) -> LedgerUpgradeType {
139 Self::discriminant(self)
140 }
141}
142
143impl Variants<LedgerUpgradeType> for LedgerUpgrade {
144 fn variants() -> slice::Iter<'static, LedgerUpgradeType> {
145 Self::VARIANTS.iter()
146 }
147}
148
149impl Union<LedgerUpgradeType> for LedgerUpgrade {}
150
151impl ReadXdr for LedgerUpgrade {
152 #[cfg(feature = "std")]
153 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
154 r.with_limited_depth(|r| {
155 let dv: LedgerUpgradeType = <LedgerUpgradeType as ReadXdr>::read_xdr(r)?;
156 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
157 let v = match dv {
158 LedgerUpgradeType::Version => Self::Version(u32::read_xdr(r)?),
159 LedgerUpgradeType::BaseFee => Self::BaseFee(u32::read_xdr(r)?),
160 LedgerUpgradeType::MaxTxSetSize => Self::MaxTxSetSize(u32::read_xdr(r)?),
161 LedgerUpgradeType::BaseReserve => Self::BaseReserve(u32::read_xdr(r)?),
162 LedgerUpgradeType::Flags => Self::Flags(u32::read_xdr(r)?),
163 LedgerUpgradeType::Config => Self::Config(ConfigUpgradeSetKey::read_xdr(r)?),
164 LedgerUpgradeType::MaxSorobanTxSetSize => {
165 Self::MaxSorobanTxSetSize(u32::read_xdr(r)?)
166 }
167 #[allow(unreachable_patterns)]
168 _ => return Err(Error::Invalid),
169 };
170 Ok(v)
171 })
172 }
173}
174
175impl WriteXdr for LedgerUpgrade {
176 #[cfg(feature = "std")]
177 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
178 w.with_limited_depth(|w| {
179 self.discriminant().write_xdr(w)?;
180 #[allow(clippy::match_same_arms)]
181 match self {
182 Self::Version(v) => v.write_xdr(w)?,
183 Self::BaseFee(v) => v.write_xdr(w)?,
184 Self::MaxTxSetSize(v) => v.write_xdr(w)?,
185 Self::BaseReserve(v) => v.write_xdr(w)?,
186 Self::Flags(v) => v.write_xdr(w)?,
187 Self::Config(v) => v.write_xdr(w)?,
188 Self::MaxSorobanTxSetSize(v) => v.write_xdr(w)?,
189 };
190 Ok(())
191 })
192 }
193}