aboutsummaryrefslogtreecommitdiff
path: root/src/zip/io.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/zip/io.rs')
-rw-r--r--src/zip/io.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/zip/io.rs b/src/zip/io.rs
new file mode 100644
index 0000000..b79ad0d
--- /dev/null
+++ b/src/zip/io.rs
@@ -0,0 +1,50 @@
1use super::file::{FileInfo, FileReader, FileWriter};
2use crate::io::{ArchiveRead, ArchiveWrite};
3use crate::result::ArchiveResult;
4use std::fs::File;
5use std::io::Read;
6use std::io::{Seek, Write};
7
8pub struct Reader<R: Read + Seek = File> {
9 reader: R,
10}
11
12impl<R: Read + Seek> ArchiveRead for Reader<R> {
13 type Reader = R;
14 type FileInfo = FileInfo;
15 type FileReader = FileReader;
16
17 fn new(reader: Self::Reader) -> ArchiveResult<Self> {
18 Ok(Self { reader })
19 }
20
21 fn files(&self) -> ArchiveResult<Vec<Self::FileInfo>> {
22 Ok(Vec::new())
23 }
24
25 fn file_reader(&self, name: &str) -> ArchiveResult<Self::FileReader> {
26 Ok(Self::FileReader {})
27 }
28}
29
30impl<R: Read + Seek> Reader<R> {}
31
32pub struct Writer<W: Write = File> {
33 writer: W,
34}
35
36impl<W: Write> ArchiveWrite for Writer<W> {
37 type Writer = W;
38 type FileInfo = FileInfo;
39 type FileWriter = FileWriter;
40
41 fn new(writer: Self::Writer) -> ArchiveResult<Self> {
42 Ok(Self { writer })
43 }
44
45 fn file_writer(&self, name: &str) -> ArchiveResult<Self::FileWriter> {
46 Ok(Self::FileWriter {})
47 }
48}
49
50impl<W: Write> Writer<W> {}