pub mod error;
pub mod lz4;
pub mod stream;
pub mod checksum;
pub mod metrics;
pub mod columnar;
pub mod format;
#[cfg(feature = "parallel")]
pub mod parallel;
#[cfg(feature = "simd")]
pub mod simd;
#[cfg(feature = "dictionary")]
pub mod dictionary;
pub use error::{Error, Result};
pub use metrics::CompressionMetrics;
pub use format::{AvzFormat, Block};
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum CompressionAlgorithm {
Lz4,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum Level {
Fast,
Balanced,
Best,
}
impl Default for Level {
fn default() -> Self {
Level::Balanced
}
}
pub fn compress(data: &[u8]) -> Result<Vec<u8>> {
lz4::compress(data)
}
pub fn decompress(data: &[u8]) -> Result<Vec<u8>> {
lz4::decompress(data)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_round_trip() {
let data = b"Hello, World!";
let compressed = compress(data).unwrap();
let decompressed = decompress(&compressed).unwrap();
assert_eq!(data, &decompressed[..]);
}
#[test]
fn test_empty_data() {
let data = b"";
let compressed = compress(data).unwrap();
let decompressed = decompress(&compressed).unwrap();
assert_eq!(data, &decompressed[..]);
}
#[test]
fn test_large_repetitive() {
let data = vec![b'A'; 10000];
let compressed = compress(&data).unwrap();
let decompressed = decompress(&compressed).unwrap();
assert_eq!(data, decompressed);
}
}