Skip to main content

stellar_xdr/generated/
end_sponsoring_future_reserves_result.rs

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