diff --git a/src/lib.rs b/src/lib.rs index 5bcb1cb..2d53b77 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,31 +5,31 @@ use std::path::Path; use bzip2::read::BzDecoder; use flate2::read::GzDecoder; -pub enum Reader { +pub enum FileDecompressed { Raw(File), Gz(GzDecoder), Bz(BzDecoder), } -impl Read for Reader { +impl Read for FileDecompressed { fn read(&mut self, buf: &mut [u8]) -> std::io::Result { match self { - Reader::Raw(file) => file.read(buf), - Reader::Gz(file) => file.read(buf), - Reader::Bz(file) => file.read(buf), + FileDecompressed::Raw(file) => file.read(buf), + FileDecompressed::Gz(file) => file.read(buf), + FileDecompressed::Bz(file) => file.read(buf), } } } -pub fn open

(path: P) -> Result +pub fn open

(path: P) -> Result where P: AsRef, { let file = File::open(&path)?; Ok(match mime_guess::from_path(path).first_raw() { - Some("application/x-gzip") => Reader::Gz(GzDecoder::new(file)), - Some("application/x-bzip2") => Reader::Bz(BzDecoder::new(file)), - _ => Reader::Raw(file), + Some("application/x-gzip") => FileDecompressed::Gz(GzDecoder::new(file)), + Some("application/x-bzip2") => FileDecompressed::Bz(BzDecoder::new(file)), + _ => FileDecompressed::Raw(file), }) }