rpgcpf 0.1.1

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

use brotli::{BrotliCompress, enc::BrotliEncoderParams};

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

/// Brotli [`Compressor`] impl
#[derive(Clone, Debug, Default)]
pub struct BrotliCompressor {
    /// Compression parameters
    pub params: BrotliEncoderParams,
}

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

impl Compressor for BrotliCompressor {
    fn compress(&self, data: &[u8]) -> Result<Vec<u8>, Error> {
        let mut data = data;
        let mut buf = Vec::new();

        BrotliCompress(&mut data, &mut buf, &self.params)?;

        Ok(buf)
    }
}