use serde::Serialize;
#[derive(Debug, Clone, Copy, Serialize)]
pub struct Compression {
size_compressed: usize,
size_decompressed: usize,
compressed: bool,
}
impl Compression {
pub fn new(compressed: &[u8], decompressed: &[u8]) -> Self {
Self {
size_compressed: compressed.len(),
size_decompressed: decompressed.len(),
compressed: compressed != decompressed,
}
}
pub fn compressed(&self) -> bool {
self.compressed
}
pub fn compression_ratio(&self) -> f32 {
self.size_compressed as f32 / self.size_decompressed as f32
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_ratio() {
let v1 = vec![1, 2];
let v2 = vec![1, 2, 3, 4];
let c = Compression::new(&v1, &v2);
assert!(c.compression_ratio() == 0.50);
}
}