use crate::driver::FileDriver; use std::io::{Read, Result as IoResult, Seek, Write}; pub struct ArchiveFile { pub(crate) driver: D, } impl ArchiveFile { pub fn new(driver: D) -> Self { Self { driver } } pub fn info(&self) -> &D::FileInfo { self.driver.info() } } impl Read for ArchiveFile { fn read(&mut self, buf: &mut [u8]) -> IoResult { self.driver.read(buf) } } impl Write for ArchiveFile { fn write(&mut self, buf: &[u8]) -> IoResult { self.driver.write(buf) } fn flush(&mut self) -> IoResult<()> { self.driver.flush() } } impl Seek for ArchiveFile { fn seek(&mut self, pos: std::io::SeekFrom) -> IoResult { self.driver.seek(pos) } }