use std::io;
pub struct ReaderVecIter<R: io::Read> {
reader: R,
buf_size: usize,
}
impl<R> ReaderVecIter<R>
where
R: io::Read,
{
pub fn new(reader: R, buf_size: usize) -> Self {
ReaderVecIter { reader, buf_size }
}
}
impl<R> Iterator for ReaderVecIter<R>
where
R: io::Read,
{
type Item = io::Result<Vec<u8>>;
fn next(&mut self) -> Option<Self::Item> {
let mut buf: Vec<u8> = vec![0u8; self.buf_size];
match self.reader.read(&mut buf) {
Ok(len) => {
if len == 0 {
return None;
}
buf.truncate(len);
Some(Ok(buf))
}
Err(e) => Some(Err(e)),
}
}
}