snarkvm_console_program/data/record/
to_bits.rs1use super::*;
17
18impl<N: Network> ToBits for Record<N, Plaintext<N>> {
19 fn write_bits_le(&self, vec: &mut Vec<bool>) {
21 let mut data_bits_le = vec![];
23 for (identifier, entry) in &self.data {
24 identifier.write_bits_le(&mut data_bits_le);
25 entry.write_bits_le(&mut data_bits_le);
26 }
27
28 self.owner.write_bits_le(vec);
30 u32::try_from(data_bits_le.len()).or_halt_with::<N>("Record data exceeds u32::MAX bits").write_bits_le(vec);
31 vec.extend_from_slice(&data_bits_le);
32 self.nonce.write_bits_le(vec);
33 }
34
35 fn write_bits_be(&self, vec: &mut Vec<bool>) {
37 let mut data_bits_be = vec![];
39 for (identifier, entry) in &self.data {
40 identifier.write_bits_be(&mut data_bits_be);
41 entry.write_bits_be(&mut data_bits_be);
42 }
43
44 self.owner.write_bits_be(vec);
46 u32::try_from(data_bits_be.len()).or_halt_with::<N>("Record data exceeds u32::MAX bits").write_bits_be(vec);
47 vec.extend_from_slice(&data_bits_be);
48 self.nonce.write_bits_be(vec);
49 }
50}
51
52impl<N: Network> ToBits for Record<N, Ciphertext<N>> {
53 fn write_bits_le(&self, vec: &mut Vec<bool>) {
55 let mut data_bits_le = vec![];
57 for (identifier, entry) in &self.data {
58 identifier.write_bits_le(&mut data_bits_le);
59 entry.write_bits_le(&mut data_bits_le);
60 }
61
62 self.owner.write_bits_le(vec);
64 u32::try_from(data_bits_le.len()).or_halt_with::<N>("Record data exceeds u32::MAX bits").write_bits_le(vec);
65 vec.extend_from_slice(&data_bits_le);
66 self.nonce.write_bits_le(vec);
67 }
68
69 fn write_bits_be(&self, vec: &mut Vec<bool>) {
71 let mut data_bits_be = vec![];
73 for (identifier, entry) in &self.data {
74 identifier.write_bits_be(&mut data_bits_be);
75 entry.write_bits_be(&mut data_bits_be);
76 }
77
78 self.owner.write_bits_be(vec);
80 u32::try_from(data_bits_be.len()).or_halt_with::<N>("Record data exceeds u32::MAX bits").write_bits_be(vec);
81 vec.extend_from_slice(&data_bits_be);
82 self.nonce.write_bits_be(vec);
83 }
84}