ttmp-rs/src/tracking_reader.rs

27 lines
485 B
Rust

use std::io::Read;
pub struct TrackingReader<R> {
inner: R,
pub read: usize,
}
impl<R: Read> TrackingReader<R> {
pub fn new(reader: R) -> Self {
Self {
inner: reader,
read: 0,
}
}
}
impl<R: Read> Read for TrackingReader<R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let res = self.inner.read(buf);
if let Ok(read) = res {
self.read += read;
}
res
}
}