Skip to main content

stellar_xdr/generated/
set_trust_line_flags_result.rs

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