pipenet 0.2.4

Non blocking tcp stream wrapper using channels
Documentation
use super::PackUnpack;

pub(crate) enum Compression {
    Lz4,
}

impl PackUnpack for Compression {
    fn pack(&self, data: &[u8]) -> Result<Vec<u8>, Box<dyn std::error::Error>> {
        match self {
            Compression::Lz4 => Ok(lz4_compression::prelude::compress(data)),
        }
    }

    fn unpack(&self, data: &[u8]) -> Result<Vec<u8>, Box<dyn std::error::Error>> {
        match self {
            Compression::Lz4 => Ok(lz4_compression::prelude::decompress(data).map_err(
                |e| match e {
                    lz4_compression::decompress::Error::UnexpectedEnd => {
                        "decompress: UnexpectedEnd"
                    }
                    lz4_compression::decompress::Error::InvalidDeduplicationOffset => {
                        "decompress: InvalidDeduplicationOffset"
                    }
                },
            )?),
        }
    }
}