rpgcpf 0.1.1

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

use fastlz_rs::decompress_to_vec;

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

/// `FastLZ` [`Decompressor`] impl
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub struct FastLZDecompressor {
    /// Decompressed data size hint for the `FastLZ` decompressor
    pub capacity_hint: Option<usize>,
}

impl FastLZDecompressor {
    /// Create a new [`FastLZDecompressor`] instance
    #[cfg_attr(test, coverage(off))]
    #[must_use]
    pub fn new(capacity_hint: Option<usize>) -> Self {
        Self { capacity_hint }
    }
}

impl Decompressor for FastLZDecompressor {
    fn decompress(&self, data: &[u8]) -> Result<Vec<u8>, Error> {
        Ok(decompress_to_vec(data, self.capacity_hint)?)
    }
}