#[derive(Default, Clone, Debug)]
pub enum Compression {
#[default]
None,
#[cfg(feature = "lz4")]
Lz4(CompressionLz4),
#[cfg(feature = "flate2")]
Zlib(CompressionZlib),
#[cfg(feature = "zstd")]
Zstd(CompressionZstd),
#[cfg(feature = "snap")]
Snappy(CompressionSnappy),
}
#[cfg(feature = "lz4")]
#[derive(Debug)]
pub struct CompressionLz4 {
pub mode: lz4::block::CompressionMode,
}
#[cfg(feature = "lz4")]
impl Default for CompressionLz4 {
fn default() -> Self {
CompressionLz4 {
mode: lz4::block::CompressionMode::DEFAULT,
}
}
}
#[cfg(feature = "lz4")]
impl Clone for CompressionLz4 {
fn clone(&self) -> Self {
use lz4::block::CompressionMode;
CompressionLz4 {
mode: match self.mode {
CompressionMode::HIGHCOMPRESSION(i) => CompressionMode::HIGHCOMPRESSION(i),
CompressionMode::FAST(i) => CompressionMode::FAST(i),
CompressionMode::DEFAULT => CompressionMode::DEFAULT,
},
}
}
}
#[cfg(feature = "flate2")]
#[derive(Default, Clone, Copy, Debug)]
pub struct CompressionZlib {
pub level: flate2::Compression,
}
#[cfg(feature = "zstd")]
#[derive(Clone, Copy, Debug)]
pub struct CompressionZstd {
pub level: i32,
}
#[cfg(feature = "zstd")]
impl Default for CompressionZstd {
fn default() -> Self {
CompressionZstd {
level: zstd::DEFAULT_COMPRESSION_LEVEL,
}
}
}
#[cfg(feature = "snap")]
#[derive(Default, Clone, Copy, Debug)]
pub struct CompressionSnappy {
}