use crate::*;
pub fn encode(data: &'_ [u8], buffer_size: usize) -> Cow<'_, [u8]> {
let encoder: DeflateEncoder<Vec<u8>> = DeflateEncoder::new(Vec::new(), Compression::default());
let mut buffered_writer: BufWriter<DeflateEncoder<Vec<u8>>> =
BufWriter::with_capacity(buffer_size, encoder);
if buffered_writer.write_all(data).is_err() {
return Cow::Owned(Vec::new());
}
match buffered_writer.into_inner() {
Ok(encoder) => Cow::Owned(encoder.finish().unwrap_or_else(|_| Vec::new())),
Err(_) => Cow::Owned(Vec::new()),
}
}
pub fn decode(data: &'_ [u8], buffer_size: usize) -> Cow<'_, [u8]> {
let decoder: DeflateDecoder<&[u8]> = DeflateDecoder::new(data);
let mut buffered_reader: BufReader<DeflateDecoder<&[u8]>> =
BufReader::with_capacity(buffer_size, decoder);
let mut decompressed_data: Vec<u8> = Vec::new();
match buffered_reader.read_to_end(&mut decompressed_data) {
Ok(_) => Cow::Owned(decompressed_data),
_ => Cow::Owned(Vec::new()),
}
}