use std::io::{Error, Read, Write};
pub use zstd;
pub use zstd_safe;
const DEFAULT_COMPRESSION_LEVEL: i32 = 0;
pub fn compress_bound(len: usize) -> usize {
zstd_safe::compress_bound(len)
}
#[inline(always)]
pub fn decompress<W: Write + ?Sized, R: Read>(input: R, output: &mut W) -> Result<usize, Error> {
let mut decoder = zstd::stream::read::Decoder::new(input)?;
let n_bytes = std::io::copy(&mut decoder, output)?;
Ok(n_bytes as usize)
}
#[inline(always)]
pub fn compress<W: Write + ?Sized, R: Read>(input: R, output: &mut W, level: Option<i32>) -> Result<usize, Error> {
let level = level.unwrap_or_else(|| DEFAULT_COMPRESSION_LEVEL); let mut encoder = zstd::stream::read::Encoder::new(input, level)?;
let n_bytes = std::io::copy(&mut encoder, output)?;
Ok(n_bytes as usize)
}