bipack_ru 0.4.4

binary size-effective format used in Divan smart contracts, wasm bindings, network protocols, etc.
Documentation
use crate::bipack_sink::BipackSink;
use crate::bipack_source::BipackError;
use crate::bipack_source::Result;

pub struct BufferSink<'a> {
    pub buffer: & 'a mut [u8],
    pub pos: usize
}

impl<'a> BufferSink<'a> {
    pub fn result_slice(self) -> & 'a [u8] {
        &self.buffer[0..self.pos]
    }
}

impl<'a> BipackSink for BufferSink<'a> {
    fn put_u8(self: &mut Self, data: u8) -> Result<()> {
        if self.pos >= self.buffer.len() {
            Err(BipackError::BufferOverflow)
        } else {
            self.buffer[self.pos] = data;
            self.pos+=1;
            Ok(())
        }
    }
}