From 5d3d32ded672b67471d9d7c85ebbe691129cc51c Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Mon, 1 Jul 2024 19:12:40 +0900 Subject: Add compression support (lzma and xz are broken) --- src/driver/driver.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/driver/driver.rs') 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 { type Io; type FileInfo: ArchiveFileInfo; - type FileDriver<'d>: FileDriver - where - Self::FileInfo: 'd, - Self::Io: 'd; } pub trait ArchiveRead: Driver where Self::Io: Read, { + type FileReader<'d>: FileDriver + where + Self: 'd; + // Create driver instance fn read(io: Self::Io) -> ArchiveResult; // Return vec of file info - fn files(&self) -> &Vec; + fn files(&self) -> Vec<&Self::FileInfo>; // Return file info by index - fn get_file_info(&self, index: usize) -> ArchiveResult<&Self::FileInfo, Self::Error>; + fn get_file_info(&self, name: &str) -> ArchiveResult<&Self::FileInfo, Self::Error>; // Return file reader by index fn get_file_reader<'d>( &'d mut self, - index: usize, - ) -> ArchiveResult, Self::Error>; + name: &str, + ) -> ArchiveResult, Self::Error>; } pub trait ArchiveWrite: Driver where Self::Io: Read + Write, { + type FileWriter<'d>: FileDriver + where + Self: 'd; } -- cgit v1.2.3