rpgcpf 0.1.0

GCPF archive compression and decompression library
Documentation
//! `FastLZ `[`Compressor`] impl

use fastlz_rs::{CompressState, CompressionLevel};

use super::{Compressor, error::Error};

/// `FastLZ `[`Compressor`] impl
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FastLZCompressor {
    /// Compression level
    pub level: CompressionLevel,
}

impl FastLZCompressor {
    /// Create a new [`FastLZCompressor`] instance
    #[cfg_attr(test, coverage(off))]
    #[must_use]
    pub fn new(level: CompressionLevel) -> Self {
        Self { level }
    }
}

impl Compressor for FastLZCompressor {
    fn compress(&self, data: &[u8]) -> Result<Vec<u8>, Error> {
        Ok(CompressState::new().compress_to_vec(data, self.level)?)
    }
}