diff options
Diffstat (limited to 'src/archive.rs')
| -rw-r--r-- | src/archive.rs | 33 |
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 | ||
