#![warn(
clippy::cast_possible_truncation,
clippy::cast_sign_loss,
clippy::cast_possible_wrap
)]
#[derive(Default)]
pub struct Reservoir {
buf: Vec<u8>,
}
const RESERVOIR_BYTES: usize = 512;
impl Reservoir {
pub fn assemble(&mut self, main_data_begin: u16, frame_main_data: &[u8]) -> &[u8] {
let available = self.buf.len().min(RESERVOIR_BYTES);
let take = available.min(main_data_begin as usize);
self.buf.drain(..self.buf.len() - take);
self.buf.extend_from_slice(frame_main_data);
&self.buf
}
pub fn reset(&mut self) {
self.buf.clear();
}
}