blob: 627db6dffc850facf9227d003594bb93f415d1a7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use crate::driver::FileDriver;
use crate::zip::ZipFileInfo;
use bzip2::write::BzEncoder;
use flate2::write::DeflateEncoder;
use std::io::Write;
use xz2::write::XzEncoder;
enum IoProxy<Io: Write> {
Store(Io),
Deflate(DeflateEncoder<Io>),
BZip2(BzEncoder<Io>),
XZ(XzEncoder<Io>),
}
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
}
}
|