use std::io::Result;
use super::util::PartialBuffer;
mod brotli;
mod deflate;
mod flate;
mod gzip;
mod zstd;
pub(crate) use self::brotli::BrotliEncoder;
pub(crate) use self::deflate::DeflateEncoder;
pub(crate) use self::flate::FlateEncoder;
pub(crate) use self::gzip::GzipEncoder;
pub(crate) use self::zstd::ZstdEncoder;
pub(crate) trait Encode {
fn encode(
&mut self,
input: &mut PartialBuffer<impl AsRef<[u8]>>,
output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
) -> Result<()>;
fn flush(&mut self, output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>)
-> Result<bool>;
fn finish(
&mut self,
output: &mut PartialBuffer<impl AsRef<[u8]> + AsMut<[u8]>>,
) -> Result<bool>;
}