//! Traits for data which can be read as a sized array. use crate::durandal::err::*; pub trait Chunked { const SIZE_CHUNK: usize; fn read(b: &[u8]) -> ResultS; } pub trait Chunker { fn chunk(b: &[u8]) -> ResultS; } impl> Chunker> for T { fn chunk(b: &[u8]) -> ResultS> { let mut v = Vec::with_capacity(b.len() / T::SIZE_CHUNK); let mut p = 0; while p < b.len() { v.push(T::read(&b[p..])?); p += T::SIZE_CHUNK; } Ok(v) } } // EOF