use enum_dispatch::enum_dispatch;
use crate::{
interface::*,
zstd,
};
#[enum_dispatch]
pub enum PolyCompressor {
ZStd(zstd::compressor::ZStdCctx),
Unit(()),
}
#[enum_dispatch]
pub enum PolyDecompressor {
ZStd(zstd::decompressor::ZStdDctx),
Unit(()),
}
impl PolyDecompressor {
pub const fn unit() -> Self {
Self::Unit(())
}
pub fn zstd() -> Self {
Self::ZStd(zstd::decompressor::ZStdDctx::new())
}
}
impl PolyCompressor {
pub const fn unit() -> Self {
Self::Unit(())
}
pub fn zstd(level: u8) -> Self {
Self::ZStd(zstd::compressor::ZStdCctx::new(level))
}
}