#![allow(unused_variables)]
use std::io;
#[repr(u32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CompressionType {
None = 0,
LZ4 = 1,
Zstd = 2,
Snappy = 3,
Dictionary = 4,
RunLength = 5,
Delta = 6,
BitPacking = 7,
}
pub trait Compression {
fn compress(&self, data: &[u8]) -> io::Result<Vec<u8>>;
fn decompress(&self, data: &[u8], decompressed_size: usize) -> io::Result<Vec<u8>>;
fn compression_type(&self) -> CompressionType;
}
pub struct NoCompression;
impl Compression for NoCompression {
fn compress(&self, data: &[u8]) -> io::Result<Vec<u8>> {
Ok(data.to_vec())
}
fn decompress(&self, data: &[u8], _decompressed_size: usize) -> io::Result<Vec<u8>> {
Ok(data.to_vec())
}
fn compression_type(&self) -> CompressionType {
CompressionType::None
}
}