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