blob: 43cf1a423a5ea973615953411397d9c5b0acc764 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use crate::file::{ArchiveFileRead, ArchiveFileWrite};
use crate::result::ArchiveResult;
use std::io::{Read, Write};
pub trait ArchiveRead: Sized {
type Reader: Read;
type FileInfo;
type FileReader: ArchiveFileRead<Info = Self::FileInfo>;
fn new(reader: Self::Reader) -> ArchiveResult<Self>;
fn files(&self) -> ArchiveResult<Vec<Self::FileInfo>>;
fn open_file(&self, name: &str) -> ArchiveResult<Self::FileReader>;
}
pub trait ArchiveWrite: Sized {
type Writer: Write;
type FileInfo;
type FileWriter: ArchiveFileWrite<Info = Self::FileInfo>;
fn new(write: Self::Writer) -> ArchiveResult<Self>;
fn create_file(&self, name: &str) -> ArchiveResult<Self::FileWriter>;
}
|