pub trait Processor<T> {
fn consume(&mut self, bytes: &[u8]) -> Option<T>;
fn chunk_size(&self) -> ChunkSize;
}
#[derive(PartialEq, Debug)]
pub enum ChunkSize {
Size(usize),
Any,
}
impl ChunkSize {
#[must_use]
pub fn unwrap(self) -> usize {
match self {
ChunkSize::Size(val) => val,
ChunkSize::Any => panic!("called `ChunkSize::unwrap()` on an `Any` value"),
}
}
#[must_use]
pub fn or_default(self, default_size: usize) -> usize {
if let ChunkSize::Size(size) = self {
return size;
}
return default_size;
}
}