stellar_xdr/generated/
clawback_result_code.rs1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4#[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}