use std::io::Write;
use flate2::{Compression, write::GzEncoder};
use super::{Compressor, error::Error};
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct GzipCompressor {
pub level: Compression,
}
impl GzipCompressor {
#[cfg_attr(test, coverage(off))]
#[must_use]
pub fn new(level: Compression) -> Self {
Self { level }
}
}
impl Compressor for GzipCompressor {
fn compress(&self, data: &[u8]) -> Result<Vec<u8>, Error> {
let mut compressor = GzEncoder::new(Vec::new(), self.level);
compressor.write_all(data)?;
Ok(compressor.finish()?)
}
}