lib-compression 0.1.0

Universal lossless compression via network-wide deduplication
Documentation
//! Model compressor bridge implementations

use crate::traits::ModelCompressor;
use crate::sovereign_codec::{SovereignCodec, CodecParams};

/// SovereignCodec wrapper implementing ModelCompressor.
pub struct SovereignCodecCompressor {
    codec: SovereignCodec,
}

impl SovereignCodecCompressor {
    pub fn new() -> Self {
        Self {
            codec: SovereignCodec::new(CodecParams::default()),
        }
    }
}

impl Default for SovereignCodecCompressor {
    fn default() -> Self {
        Self::new()
    }
}

impl ModelCompressor for SovereignCodecCompressor {
    fn compress(&self, data: &[u8]) -> crate::Result<Vec<u8>> {
        self.codec.compress(data)
    }

    fn decompress(&self, data: &[u8]) -> crate::Result<Vec<u8>> {
        self.codec.decompress(data)
    }

    fn name(&self) -> &str {
        "sovereign-codec"
    }
}

/// Adaptive codec with learned parameters (stub).
pub struct AdaptiveCodecCompressor {
    codec: SovereignCodec,
}

impl AdaptiveCodecCompressor {
    pub fn new() -> Self {
        Self {
            codec: SovereignCodec::new(CodecParams::default()),
        }
    }
}

impl Default for AdaptiveCodecCompressor {
    fn default() -> Self {
        Self::new()
    }
}

impl ModelCompressor for AdaptiveCodecCompressor {
    fn compress(&self, data: &[u8]) -> crate::Result<Vec<u8>> {
        self.codec.compress(data)
    }

    fn decompress(&self, data: &[u8]) -> crate::Result<Vec<u8>> {
        self.codec.decompress(data)
    }

    fn name(&self) -> &str {
        "adaptive-codec"
    }
}