cas_lib/compression/
zstd.rs

1use std::io::Cursor;
2
3/// Compresses data using Zstandard compression algorithm.
4/// The `level` parameter controls the compression level (0-22).
5/// Higher levels result in better compression but slower performance.
6pub fn compress(data_to_compress: Vec<u8>, level: i32) -> Vec<u8> {
7    let cursor = Cursor::new(data_to_compress);
8    let mut compressed_data = Vec::new();
9    zstd::stream::copy_encode(cursor, &mut compressed_data, level).unwrap();
10    compressed_data
11}
12
13/// Decompresses data using Zstandard decompression algorithm.
14pub fn decompress(data_to_decompress: Vec<u8>) -> Vec<u8> {
15    let mut cursor = Cursor::new(data_to_decompress);
16    let mut decompressed_data = Vec::new();
17    zstd::stream::copy_decode(&mut cursor, &mut decompressed_data).unwrap();
18    decompressed_data
19}