Skip to main content

stellar_xdr/generated/
sc_env_meta_entry.rs

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