cardano_serialization_lib/serialization/governance/proposals/
voting_proposal.rs1use crate::serialization::{check_len};
2use crate::*;
3
4impl Serialize for VotingProposal {
5 fn serialize<'se, W: Write>(
6 &self,
7 serializer: &'se mut Serializer<W>,
8 ) -> cbor_event::Result<&'se mut Serializer<W>> {
9 serializer.write_array(cbor_event::Len::Len(4))?;
10 self.deposit.serialize(serializer)?;
11 self.reward_account.serialize(serializer)?;
12 self.governance_action.serialize(serializer)?;
13 self.anchor.serialize(serializer)?;
14 Ok(serializer)
15 }
16}
17
18impl_deserialize_for_wrapped_tuple!(VotingProposal);
19
20impl DeserializeEmbeddedGroup for VotingProposal {
21 fn deserialize_as_embedded_group<R: BufRead + Seek>(
22 raw: &mut Deserializer<R>,
23 len: cbor_event::Len,
24 ) -> Result<Self, DeserializeError> {
25 check_len(
26 len,
27 4,
28 "(deposit, reward_account, gov_action, anchor)",
29 )?;
30
31 let deposit = Coin::deserialize(raw)
32 .map_err(|e| e.annotate("deposit"))?;
33 let reward_account = RewardAddress::deserialize(raw)
34 .map_err(|e| e.annotate("reward_account"))?;
35 let gov_action = GovernanceAction::deserialize(raw)
36 .map_err(|e| e.annotate("gov_action"))?;
37 let anchor = Anchor::deserialize(raw)
38 .map_err(|e| e.annotate("anchor"))?;
39
40 return Ok(VotingProposal {
41 deposit,
42 reward_account,
43 governance_action: gov_action,
44 anchor,
45 });
46 }
47}