Skip to main content

stellar_xdr/generated/
begin_sponsoring_future_reserves_result.rs

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