Skip to main content

stellar_xdr/generated/
claimable_balance_id.rs

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