blob: d20c3782e05f51b25d3e1c8cea74c6a29267eb29 (
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 liblzma::write::XzEncoder;
use std::io::Write;
enum Compression<Io: Write> {
Store(Io),
Deflate(DeflateEncoder<Io>),
BZip2(BzEncoder<Io>),
Xz(XzEncoder<Io>),
}
pub struct ZipFileWriter<'d, Io: Write> {
io: Compression<&'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
}
}
|