deko 0.6.0

A decoder that automatically detects compression format (gzip, bzip2, xz, zstd) via external crates. Includes an encoder for the same formats as well.
Documentation
use std::io::Error;
use std::io::Write;

pub trait Finish<W> {
    fn finish(self) -> Result<W, Error>;
}

#[cfg(feature = "flate2")]
impl<W: Write> Finish<W> for flate2::write::GzEncoder<W> {
    fn finish(self) -> Result<W, Error> {
        Self::finish(self)
    }
}

#[cfg(feature = "flate2")]
impl<W: Write> Finish<W> for flate2::write::ZlibEncoder<W> {
    fn finish(self) -> Result<W, Error> {
        Self::finish(self)
    }
}

#[cfg(feature = "bzip2")]
impl<W: Write> Finish<W> for bzip2::write::BzEncoder<W> {
    fn finish(self) -> Result<W, Error> {
        Self::finish(self)
    }
}

#[cfg(feature = "xz")]
impl<W: Write> Finish<W> for xz::write::XzEncoder<W> {
    fn finish(self) -> Result<W, Error> {
        Self::finish(self)
    }
}

#[cfg(feature = "zstd")]
impl<'a, W: Write> Finish<W> for zstd::stream::write::Encoder<'a, W> {
    fn finish(self) -> Result<W, Error> {
        Self::finish(self)
    }
}