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; fn new(reader: Self::Reader) -> ArchiveResult; fn files(&self) -> ArchiveResult>; fn open_file(&self, name: &str) -> ArchiveResult; } pub trait ArchiveWrite: Sized { type Writer: Write; type FileInfo; type FileWriter: ArchiveFileWrite; fn new(write: Self::Writer) -> ArchiveResult; fn create_file(&self, name: &str) -> ArchiveResult; }