#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(feature = "nightly", feature(optimize_attribute))]
#[cfg(feature = "alloc")]
extern crate alloc;
pub mod error;
#[allow(dead_code)]
pub(crate) mod bitstream;
#[allow(dead_code)]
pub(crate) mod fse;
#[allow(dead_code)]
pub(crate) mod hash;
#[allow(dead_code)]
pub(crate) mod huffman;
#[allow(dead_code)]
pub(crate) mod xxhash;
#[allow(dead_code)]
pub(crate) mod block;
pub mod frame;
#[allow(dead_code)]
pub mod decode;
#[allow(dead_code)]
pub mod encode;
#[cfg(feature = "alloc")]
pub mod dict;
#[allow(dead_code)]
pub(crate) mod simd;
pub use error::{CompressError, DecompressError, ZstdError};
#[cfg(feature = "alloc")]
pub use dict::Dictionary;
#[cfg(feature = "alloc")]
pub use encode::strategy::LevelParams;
pub const DEFAULT_DECOMPRESS_LIMIT: usize = usize::MAX;
pub(crate) const LARGE_OUTPUT_THRESHOLD: usize = 512 * 1024;
#[cfg(feature = "alloc")]
pub fn decompress(input: &[u8]) -> Result<alloc::vec::Vec<u8>, DecompressError> {
decode::decompress(input)
}
#[cfg(feature = "alloc")]
pub fn decompress_with_dict(
input: &[u8],
dict: &dict::Dictionary,
) -> Result<alloc::vec::Vec<u8>, DecompressError> {
decode::decompress_with_dict(input, Some(dict))
}
#[cfg(feature = "alloc")]
pub fn decompress_into(
input: &[u8],
output: &mut alloc::vec::Vec<u8>,
) -> Result<usize, DecompressError> {
decode::decompress_into(input, output)
}
#[cfg(feature = "alloc")]
pub fn compress(input: &[u8], level: i32) -> Result<alloc::vec::Vec<u8>, CompressError> {
encode::compress(input, level)
}
#[cfg(feature = "alloc")]
pub fn compress_with_params(
input: &[u8],
params: &encode::strategy::LevelParams,
) -> Result<alloc::vec::Vec<u8>, CompressError> {
encode::compress_with_params(input, params)
}
#[cfg(feature = "alloc")]
pub fn compress_with_dict(
input: &[u8],
level: i32,
dict: &dict::Dictionary,
) -> Result<alloc::vec::Vec<u8>, CompressError> {
encode::compress_with_dict(input, level, dict)
}
#[cfg(feature = "alloc")]
pub fn compress_into(input: &[u8], output: &mut [u8], level: i32) -> Result<usize, CompressError> {
encode::compress_into(input, output, level)
}
pub fn compress_bound(input_len: usize) -> usize {
let num_blocks = input_len / frame::MAX_BLOCK_SIZE + 1;
input_len + num_blocks * 3 + 18
}
#[cfg(feature = "std")]
pub use decode::context::DecompressContext;
#[cfg(feature = "std")]
pub use decode::streaming::FrameDecoder;
#[cfg(feature = "std")]
pub use encode::context::CompressContext;
#[cfg(feature = "std")]
pub use encode::streaming::FrameEncoder;