aboutsummaryrefslogtreecommitdiff
path: root/src/driver/driver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver/driver.rs')
-rw-r--r--src/driver/driver.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/driver/driver.rs b/src/driver/driver.rs
index 4c6baad..f7f1f24 100644
--- a/src/driver/driver.rs
+++ b/src/driver/driver.rs
@@ -8,34 +8,37 @@ pub trait Driver: Sized {
8 8
9 type Io; 9 type Io;
10 type FileInfo: ArchiveFileInfo; 10 type FileInfo: ArchiveFileInfo;
11 type FileDriver<'d>: FileDriver
12 where
13 Self::FileInfo: 'd,
14 Self::Io: 'd;
15} 11}
16 12
17pub trait ArchiveRead: Driver 13pub trait ArchiveRead: Driver
18where 14where
19 Self::Io: Read, 15 Self::Io: Read,
20{ 16{
17 type FileReader<'d>: FileDriver
18 where
19 Self: 'd;
20
21 // Create driver instance 21 // Create driver instance
22 fn read(io: Self::Io) -> ArchiveResult<Self, Self::Error>; 22 fn read(io: Self::Io) -> ArchiveResult<Self, Self::Error>;
23 23
24 // Return vec of file info 24 // Return vec of file info
25 fn files(&self) -> &Vec<Self::FileInfo>; 25 fn files(&self) -> Vec<&Self::FileInfo>;
26 26
27 // Return file info by index 27 // Return file info by index
28 fn get_file_info(&self, index: usize) -> ArchiveResult<&Self::FileInfo, Self::Error>; 28 fn get_file_info(&self, name: &str) -> ArchiveResult<&Self::FileInfo, Self::Error>;
29 29
30 // Return file reader by index 30 // Return file reader by index
31 fn get_file_reader<'d>( 31 fn get_file_reader<'d>(
32 &'d mut self, 32 &'d mut self,
33 index: usize, 33 name: &str,
34 ) -> ArchiveResult<Self::FileDriver<'d>, Self::Error>; 34 ) -> ArchiveResult<Self::FileReader<'d>, Self::Error>;
35} 35}
36 36
37pub trait ArchiveWrite: Driver 37pub trait ArchiveWrite: Driver
38where 38where
39 Self::Io: Read + Write, 39 Self::Io: Read + Write,
40{ 40{
41 type FileWriter<'d>: FileDriver
42 where
43 Self: 'd;
41} 44}