diff options
Diffstat (limited to 'src/io.rs')
| -rw-r--r-- | src/io.rs | 16 |
1 files changed, 13 insertions, 3 deletions
| @@ -1,14 +1,20 @@ | |||
| 1 | use std::io::{Read, Seek, Write}; | 1 | use crate::file::{ArchiveFileRead, ArchiveFileWrite}; |
| 2 | |||
| 3 | use crate::result::ArchiveResult; | 2 | use crate::result::ArchiveResult; |
| 3 | use std::io::{Read, Write}; | ||
| 4 | 4 | ||
| 5 | pub trait ArchiveRead | 5 | pub trait ArchiveRead |
| 6 | where | 6 | where |
| 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 | ||
| 14 | pub trait ArchiveWrite | 20 | pub 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 | } |
