Skip to main content

stellar_xdr/generated/
claimable_balance_flags.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// ClaimableBalanceFlags is an XDR Enum defined as:
5///
6/// ```text
7/// enum ClaimableBalanceFlags
8/// {
9///     // If set, the issuer account of the asset held by the claimable balance may
10///     // clawback the claimable balance
11///     CLAIMABLE_BALANCE_CLAWBACK_ENABLED_FLAG = 0x1
12/// };
13/// ```
14///
15// enum
16#[cfg_attr(feature = "alloc", derive(Default))]
17#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19#[cfg_attr(
20    all(feature = "serde", feature = "alloc"),
21    derive(serde::Serialize, serde::Deserialize),
22    serde(rename_all = "snake_case")
23)]
24#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25#[repr(i32)]
26pub enum ClaimableBalanceFlags {
27    #[cfg_attr(feature = "alloc", default)]
28    ClaimableBalanceClawbackEnabledFlag = 1,
29}
30
31impl ClaimableBalanceFlags {
32    const _VARIANTS: &[ClaimableBalanceFlags] =
33        &[ClaimableBalanceFlags::ClaimableBalanceClawbackEnabledFlag];
34    pub const VARIANTS: [ClaimableBalanceFlags; Self::_VARIANTS.len()] = {
35        let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
36        let mut i = 1;
37        while i < Self::_VARIANTS.len() {
38            arr[i] = Self::_VARIANTS[i];
39            i += 1;
40        }
41        arr
42    };
43    const _VARIANTS_STR: &[&str] = &["ClaimableBalanceClawbackEnabledFlag"];
44    pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
45        let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
46        let mut i = 1;
47        while i < Self::_VARIANTS_STR.len() {
48            arr[i] = Self::_VARIANTS_STR[i];
49            i += 1;
50        }
51        arr
52    };
53
54    #[must_use]
55    pub const fn name(&self) -> &'static str {
56        match self {
57            Self::ClaimableBalanceClawbackEnabledFlag => "ClaimableBalanceClawbackEnabledFlag",
58        }
59    }
60
61    #[must_use]
62    pub const fn variants() -> [ClaimableBalanceFlags; Self::_VARIANTS.len()] {
63        Self::VARIANTS
64    }
65}
66
67impl Name for ClaimableBalanceFlags {
68    #[must_use]
69    fn name(&self) -> &'static str {
70        Self::name(self)
71    }
72}
73
74impl Variants<ClaimableBalanceFlags> for ClaimableBalanceFlags {
75    fn variants() -> slice::Iter<'static, ClaimableBalanceFlags> {
76        Self::VARIANTS.iter()
77    }
78}
79
80impl Enum for ClaimableBalanceFlags {}
81
82impl fmt::Display for ClaimableBalanceFlags {
83    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
84        f.write_str(self.name())
85    }
86}
87
88impl TryFrom<i32> for ClaimableBalanceFlags {
89    type Error = Error;
90
91    fn try_from(i: i32) -> Result<Self, Error> {
92        let e = match i {
93            1 => ClaimableBalanceFlags::ClaimableBalanceClawbackEnabledFlag,
94            #[allow(unreachable_patterns)]
95            _ => return Err(Error::Invalid),
96        };
97        Ok(e)
98    }
99}
100
101impl From<ClaimableBalanceFlags> for i32 {
102    #[must_use]
103    fn from(e: ClaimableBalanceFlags) -> Self {
104        e as Self
105    }
106}
107
108impl ReadXdr for ClaimableBalanceFlags {
109    #[cfg(feature = "std")]
110    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
111        r.with_limited_depth(|r| {
112            let e = i32::read_xdr(r)?;
113            let v: Self = e.try_into()?;
114            Ok(v)
115        })
116    }
117}
118
119impl WriteXdr for ClaimableBalanceFlags {
120    #[cfg(feature = "std")]
121    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
122        w.with_limited_depth(|w| {
123            let i: i32 = (*self).into();
124            i.write_xdr(w)
125        })
126    }
127}