aboutsummaryrefslogtreecommitdiff
path: root/src/archive.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-07-14 17:15:24 +0900
committerIgor Tolmachev <me@igorek.dev>2024-07-14 17:15:24 +0900
commitd515e20a26cc959db912504706189ad1cce9dbfa (patch)
tree9abaab23fc8e90e335f3f44d20f60bc2d0f28926 /src/archive.rs
parent75f4a84e977a1f409e6580056dc31343e15bbf3e (diff)
downloadarchivator-d515e20a26cc959db912504706189ad1cce9dbfa.tar.gz
archivator-d515e20a26cc959db912504706189ad1cce9dbfa.zip
Add file indexation
Diffstat (limited to 'src/archive.rs')
-rw-r--r--src/archive.rs33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/archive.rs b/src/archive.rs
index 2dab393..e17db80 100644
--- a/src/archive.rs
+++ b/src/archive.rs
@@ -18,6 +18,7 @@ where
18 }) 18 })
19 } 19 }
20 20
21 #[inline]
21 pub fn read_from_file(path: impl AsRef<Path>) -> ArchiveResult<Self, D::Error> 22 pub fn read_from_file(path: impl AsRef<Path>) -> ArchiveResult<Self, D::Error>
22 where 23 where
23 D: ArchiveRead<Io = File>, 24 D: ArchiveRead<Io = File>,
@@ -25,19 +26,41 @@ where
25 Self::read(File::open(path)?) 26 Self::read(File::open(path)?)
26 } 27 }
27 28
28 pub fn files(&self) -> Vec<&D::FileInfo> { 29 pub fn files(&self) -> &Vec<D::FileInfo> {
29 self.driver.files() 30 self.driver.files()
30 } 31 }
31 32
32 pub fn get_file_info(&self, name: &str) -> ArchiveResult<&D::FileInfo, D::Error> { 33 #[inline]
33 self.driver.get_file_info(name) 34 pub fn len(&self) -> usize {
35 self.files().len()
34 } 36 }
35 37
36 pub fn get_file_reader<'d>( 38 pub fn get_file_index(&self, name: &str) -> ArchiveResult<usize, D::Error> {
39 self.driver.get_file_index(name)
40 }
41
42 pub fn get_file_info_by_index(&self, index: usize) -> ArchiveResult<&D::FileInfo, D::Error> {
43 self.driver.get_file_info(index)
44 }
45
46 #[inline]
47 pub fn get_file_info_by_name(&self, name: &str) -> ArchiveResult<&D::FileInfo, D::Error> {
48 self.get_file_info_by_index(self.get_file_index(name)?)
49 }
50
51 pub fn get_file_reader_by_index<'d>(
52 &'d mut self,
53 index: usize,
54 ) -> ArchiveResult<ArchiveFile<D::FileReader<'d>>, D::Error> {
55 Ok(ArchiveFile::new(self.driver.get_file_reader(index)?))
56 }
57
58 #[inline]
59 pub fn get_file_reader_by_name<'d>(
37 &'d mut self, 60 &'d mut self,
38 name: &str, 61 name: &str,
39 ) -> ArchiveResult<ArchiveFile<D::FileReader<'d>>, D::Error> { 62 ) -> ArchiveResult<ArchiveFile<D::FileReader<'d>>, D::Error> {
40 Ok(ArchiveFile::new(self.driver.get_file_reader(name)?)) 63 self.get_file_reader_by_index(self.get_file_index(name)?)
41 } 64 }
42} 65}
43 66