1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use super::Result;

pub trait Serializer {
    fn prepend(&mut self, data: impl AsRef<[u8]>) -> Result<()>;

    fn len(&self) -> usize;

    fn is_empty(&self) -> bool {
        self.len() == 0
    }
}

impl Serializer for usize {
    fn prepend(&mut self, data: impl AsRef<[u8]>) -> Result<()> {
        *self += data.as_ref().len();
        Ok(())
    }

    fn len(&self) -> usize {
        *self
    }
}