Skip to main content

stellar_xdr/generated/
contract_code_entry.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// ContractCodeEntry is an XDR Struct defined as:
5///
6/// ```text
7/// struct ContractCodeEntry {
8///     union switch (int v)
9///     {
10///         case 0:
11///             void;
12///         case 1:
13///             struct
14///             {
15///                 ExtensionPoint ext;
16///                 ContractCodeCostInputs costInputs;
17///             } v1;
18///     } ext;
19///
20///     Hash hash;
21///     opaque code<>;
22/// };
23/// ```
24///
25#[cfg_attr(feature = "alloc", derive(Default))]
26#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
28#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29#[cfg_attr(
30    all(feature = "serde", feature = "alloc"),
31    serde_with::serde_as,
32    derive(serde::Serialize, serde::Deserialize),
33    serde(rename_all = "snake_case")
34)]
35#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36pub struct ContractCodeEntry {
37    pub ext: ContractCodeEntryExt,
38    pub hash: Hash,
39    pub code: BytesM,
40}
41
42impl ReadXdr for ContractCodeEntry {
43    #[cfg(feature = "std")]
44    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45        r.with_limited_depth(|r| {
46            Ok(Self {
47                ext: ContractCodeEntryExt::read_xdr(r)?,
48                hash: Hash::read_xdr(r)?,
49                code: BytesM::read_xdr(r)?,
50            })
51        })
52    }
53}
54
55impl WriteXdr for ContractCodeEntry {
56    #[cfg(feature = "std")]
57    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
58        w.with_limited_depth(|w| {
59            self.ext.write_xdr(w)?;
60            self.hash.write_xdr(w)?;
61            self.code.write_xdr(w)?;
62            Ok(())
63        })
64    }
65}