agentic_memory/format/compression.rs
1//! LZ4 content compression/decompression.
2
3use crate::types::error::{AmemError, AmemResult};
4
5/// Compress UTF-8 content bytes with LZ4 (prepend size for decompression).
6pub fn compress_content(content: &str) -> AmemResult<Vec<u8>> {
7 Ok(lz4_flex::compress_prepend_size(content.as_bytes()))
8}
9
10/// Decompress LZ4-compressed content bytes back to a UTF-8 string.
11pub fn decompress_content(data: &[u8]) -> AmemResult<String> {
12 let bytes = lz4_flex::decompress_size_prepended(data)
13 .map_err(|e| AmemError::Compression(e.to_string()))?;
14 String::from_utf8(bytes).map_err(|e| AmemError::Compression(e.to_string()))
15}