use crate::io::{ArchiveRead, ArchiveWrite}; use crate::result::ArchiveResult; use std::fs::File; use std::path::Path; pub struct Archive { pub io: IO, } impl Archive { pub fn file_reader(path: impl AsRef) -> ArchiveResult where IO: ArchiveRead, { Self::reader(File::open(path)?) } pub fn reader(reader: IO::Reader) -> ArchiveResult { Ok(Self { io: IO::new(reader)?, }) } } impl Archive {} impl Archive { pub fn file_writer(path: impl AsRef) -> ArchiveResult where IO: ArchiveWrite, { Self::writer(File::create(path)?) } pub fn writer(writer: IO::Writer) -> ArchiveResult { Ok(Self { io: IO::new(writer)?, }) } } impl Archive {}