aboutsummaryrefslogtreecommitdiff
path: root/src/io.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/io.rs')
-rw-r--r--src/io.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/io.rs b/src/io.rs
index cea998f..df81ce0 100644
--- a/src/io.rs
+++ b/src/io.rs
@@ -1,14 +1,20 @@
1use std::io::{Read, Seek, Write}; 1use crate::file::{ArchiveFileRead, ArchiveFileWrite};
2
3use crate::result::ArchiveResult; 2use crate::result::ArchiveResult;
3use std::io::{Read, Write};
4 4
5pub trait ArchiveRead 5pub trait ArchiveRead
6where 6where
7 Self: Sized, 7 Self: Sized,
8{ 8{
9 type Reader: Read + Seek; 9 type Reader: Read;
10 type FileInfo;
11 type FileReader: ArchiveFileRead<Info = Self::FileInfo>;
10 12
11 fn new(reader: Self::Reader) -> ArchiveResult<Self>; 13 fn new(reader: Self::Reader) -> ArchiveResult<Self>;
14
15 fn files(&self) -> ArchiveResult<Vec<Self::FileInfo>>;
16
17 fn file_reader(&self, name: &str) -> ArchiveResult<Self::FileReader>;
12} 18}
13 19
14pub trait ArchiveWrite 20pub trait ArchiveWrite
@@ -16,6 +22,10 @@ where
16 Self: Sized, 22 Self: Sized,
17{ 23{
18 type Writer: Write; 24 type Writer: Write;
25 type FileInfo;
26 type FileWriter: ArchiveFileWrite<Info = Self::FileInfo>;
19 27
20 fn new(write: Self::Writer) -> ArchiveResult<Self>; 28 fn new(write: Self::Writer) -> ArchiveResult<Self>;
29
30 fn file_writer(&self, name: &str) -> ArchiveResult<Self::FileWriter>;
21} 31}