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(()) } } }