humidity_core/serde/
ser.rs1use super::Error;
2
3pub struct Serializer<'output> {
4 out: &'output mut [u8],
5 pos: usize,
6}
7
8impl<'output> Serializer<'output> {
9 pub fn new(out: &'output mut [u8]) -> Self {
10 Self { out, pos: 0 }
11 }
12
13 pub fn write_u16(&mut self, value: u16) -> Result<usize, Error> {
14 self.write(&value.to_le_bytes())
15 }
16
17 pub fn write_u8(&mut self, value: u8) -> Result<usize, Error> {
18 self.write(&value.to_le_bytes())
19 }
20
21 fn write(&mut self, value: &[u8]) -> Result<usize, Error> {
22 if self.out[self.pos..].len() < value.len() {
23 return Err(Error::ErrBufferSmall);
24 }
25 self.out[self.pos..(self.pos + value.len())].copy_from_slice(value);
26 self.pos += value.len();
27 Ok(value.len())
28 }
29}