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