compact_encoding/
generic.rs1use super::{CompactEncoding, EncodingError, State};
4
5impl CompactEncoding<String> for State {
6 fn preencode(&mut self, value: &String) -> Result<usize, EncodingError> {
7 self.preencode_str(value)
8 }
9
10 fn encode(&mut self, value: &String, buffer: &mut [u8]) -> Result<usize, EncodingError> {
11 self.encode_str(value, buffer)
12 }
13
14 fn decode(&mut self, buffer: &[u8]) -> Result<String, EncodingError> {
15 self.decode_string(buffer)
16 }
17}
18
19impl CompactEncoding<u8> for State {
20 fn preencode(&mut self, _: &u8) -> Result<usize, EncodingError> {
21 self.add_end(1)
22 }
23
24 fn encode(&mut self, value: &u8, buffer: &mut [u8]) -> Result<usize, EncodingError> {
25 buffer[self.start()] = *value;
26 self.add_start(1)
27 }
28
29 fn decode(&mut self, buffer: &[u8]) -> Result<u8, EncodingError> {
30 let value = buffer[self.start()];
31 self.add_start(1)?;
32 Ok(value)
33 }
34}
35
36impl CompactEncoding<u32> for State {
37 fn preencode(&mut self, value: &u32) -> Result<usize, EncodingError> {
38 self.preencode_uint_var(value)
39 }
40
41 fn encode(&mut self, value: &u32, buffer: &mut [u8]) -> Result<usize, EncodingError> {
42 self.encode_u32_var(value, buffer)
43 }
44
45 fn decode(&mut self, buffer: &[u8]) -> Result<u32, EncodingError> {
46 self.decode_u32_var(buffer)
47 }
48}
49
50impl CompactEncoding<u64> for State {
51 fn preencode(&mut self, value: &u64) -> Result<usize, EncodingError> {
52 self.preencode_uint_var(value)
53 }
54
55 fn encode(&mut self, value: &u64, buffer: &mut [u8]) -> Result<usize, EncodingError> {
56 self.encode_u64_var(value, buffer)
57 }
58
59 fn decode(&mut self, buffer: &[u8]) -> Result<u64, EncodingError> {
60 self.decode_u64_var(buffer)
61 }
62}
63
64impl CompactEncoding<usize> for State {
65 fn preencode(&mut self, value: &usize) -> Result<usize, EncodingError> {
66 self.preencode_usize_var(value)
67 }
68
69 fn encode(&mut self, value: &usize, buffer: &mut [u8]) -> Result<usize, EncodingError> {
70 self.encode_usize_var(value, buffer)
71 }
72
73 fn decode(&mut self, buffer: &[u8]) -> Result<usize, EncodingError> {
74 self.decode_usize_var(buffer)
75 }
76}
77
78impl CompactEncoding<Box<[u8]>> for State {
79 fn preencode(&mut self, value: &Box<[u8]>) -> Result<usize, EncodingError> {
80 self.preencode_buffer(value)
81 }
82
83 fn encode(&mut self, value: &Box<[u8]>, buffer: &mut [u8]) -> Result<usize, EncodingError> {
84 self.encode_buffer(value, buffer)
85 }
86
87 fn decode(&mut self, buffer: &[u8]) -> Result<Box<[u8]>, EncodingError> {
88 self.decode_buffer(buffer)
89 }
90}
91
92impl CompactEncoding<Vec<u8>> for State {
93 fn preencode(&mut self, value: &Vec<u8>) -> Result<usize, EncodingError> {
94 self.preencode_buffer_vec(value)
95 }
96
97 fn encode(&mut self, value: &Vec<u8>, buffer: &mut [u8]) -> Result<usize, EncodingError> {
98 self.encode_buffer(value, buffer)
99 }
100
101 fn decode(&mut self, buffer: &[u8]) -> Result<Vec<u8>, EncodingError> {
102 self.decode_buffer_vec(buffer)
103 }
104}
105
106impl CompactEncoding<Vec<u32>> for State {
107 fn preencode(&mut self, value: &Vec<u32>) -> Result<usize, EncodingError> {
108 self.preencode_u32_array(value)
109 }
110
111 fn encode(&mut self, value: &Vec<u32>, buffer: &mut [u8]) -> Result<usize, EncodingError> {
112 self.encode_u32_array(value, buffer)
113 }
114
115 fn decode(&mut self, buffer: &[u8]) -> Result<Vec<u32>, EncodingError> {
116 self.decode_u32_array(buffer)
117 }
118}
119
120impl CompactEncoding<Vec<String>> for State {
121 fn preencode(&mut self, value: &Vec<String>) -> Result<usize, EncodingError> {
122 self.preencode_string_array(value)
123 }
124
125 fn encode(&mut self, value: &Vec<String>, buffer: &mut [u8]) -> Result<usize, EncodingError> {
126 self.encode_string_array(value, buffer)
127 }
128
129 fn decode(&mut self, buffer: &[u8]) -> Result<Vec<String>, EncodingError> {
130 self.decode_string_array(buffer)
131 }
132}
133
134impl CompactEncoding<Vec<[u8; 32]>> for State {
135 fn preencode(&mut self, value: &Vec<[u8; 32]>) -> Result<usize, EncodingError> {
136 self.preencode_fixed_32_array(value)
137 }
138
139 fn encode(&mut self, value: &Vec<[u8; 32]>, buffer: &mut [u8]) -> Result<usize, EncodingError> {
140 self.encode_fixed_32_array(value, buffer)
141 }
142
143 fn decode(&mut self, buffer: &[u8]) -> Result<Vec<[u8; 32]>, EncodingError> {
144 self.decode_fixed_32_array(buffer)
145 }
146}