Skip to main content

stellar_xdr/generated/
clawback_result_code.rs

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