mod compressor;
mod decompressor;
pub use self::compressor::Compressor;
pub use self::decompressor::Decompressor;
use std::io;
pub fn compress_to_buffer(
source: &[u8],
destination: &mut [u8],
level: i32,
) -> io::Result<usize> {
Compressor::new().compress_to_buffer(source, destination, level)
}
pub fn compress(data: &[u8], level: i32) -> io::Result<Vec<u8>> {
Compressor::new().compress(data, level)
}
pub fn decompress_to_buffer(
source: &[u8],
destination: &mut [u8],
) -> io::Result<usize> {
Decompressor::new().decompress_to_buffer(source, destination)
}
pub fn decompress(data: &[u8], capacity: usize) -> io::Result<Vec<u8>> {
Decompressor::new().decompress(data, capacity)
}
#[cfg(test)]
mod tests {
use super::{compress, decompress};
#[test]
fn test_direct() {
let text = include_str!("../../assets/example.txt");
crate::test_cycle_unwrap(
text.as_bytes(),
|data| compress(data, 1),
|data| decompress(data, text.len()),
);
}
}