26 lines
611 B
Rust
26 lines
611 B
Rust
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(())
|
|
}
|
|
}
|
|
} |