mid_compression/
polymorphic.rs1use enum_dispatch::enum_dispatch;
2
3use crate::{
4 interface::*,
5 zstd,
6};
7
8#[enum_dispatch]
10pub enum PolyCompressor {
11 ZStd(zstd::compressor::ZStdCctx),
12 Unit(()),
13}
14
15#[enum_dispatch]
17pub enum PolyDecompressor {
18 ZStd(zstd::decompressor::ZStdDctx),
19 Unit(()),
20}
21
22impl PolyDecompressor {
23 pub const fn unit() -> Self {
26 Self::Unit(())
27 }
28
29 pub fn zstd() -> Self {
31 Self::ZStd(zstd::decompressor::ZStdDctx::new())
32 }
33}
34
35impl PolyCompressor {
36 pub const fn unit() -> Self {
39 Self::Unit(())
40 }
41
42 pub fn zstd(level: u8) -> Self {
44 Self::ZStd(zstd::compressor::ZStdCctx::new(level))
45 }
46}