use crate::file::{ArchiveFileRead, ArchiveFileWrite}; use crate::result::ArchiveResult; use std::io::{Read, Write}; pub trait ArchiveRead where Self: Sized, { type Reader: Read; type FileInfo; type FileReader: ArchiveFileRead; fn new(reader: Self::Reader) -> ArchiveResult; fn files(&self) -> ArchiveResult>; fn file_reader(&self, name: &str) -> ArchiveResult; } pub trait ArchiveWrite where Self: Sized, { type Writer: Write; type FileInfo; type FileWriter: ArchiveFileWrite; fn new(write: Self::Writer) -> ArchiveResult; fn file_writer(&self, name: &str) -> ArchiveResult; }