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