use crate::driver::FileDriver; use crate::zip::ZipFileInfo; use bzip2::write::BzEncoder; use flate2::write::DeflateEncoder; use liblzma::write::XzEncoder; use std::io::Write; enum IoProxy { Store(Io), Deflate(DeflateEncoder), BZip2(BzEncoder), Xz(XzEncoder), } pub struct ZipFileWriter<'d, Io: Write> { io: IoProxy<&'d mut Io>, info: &'d ZipFileInfo, bounds: (u64, u64), cursor: u64, } impl<'d, Io: Write> FileDriver for ZipFileWriter<'d, Io> { type Io = Io; type FileInfo = ZipFileInfo; fn info(&self) -> &Self::FileInfo { self.info } }