pub trait Archive {
// Required methods
fn contains(&mut self, file: String) -> Result<bool, ArchiverError>;
fn extract(&mut self, destination: &Path) -> Result<(), ArchiverError>;
fn extract_single(
&mut self,
target: &Path,
file: String,
) -> Result<(), ArchiverError>;
fn files(&mut self) -> Result<Vec<String>, ArchiverError>;
fn walk(
&mut self,
f: Box<dyn Fn(String) -> Option<String>>,
) -> Result<(), ArchiverError>;
}