humidity_core/serde/
ser.rs

1use 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}