lib_compression/
zkc_compressor.rs1use crate::shard::Shard;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct CompressedShard {
9 pub shard_id: [u8; 32],
10 pub data: Vec<u8>,
11 pub stats: CompressionStats,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize, Default)]
16pub struct CompressionStats {
17 pub original_size: usize,
18 pub compressed_size: usize,
19 pub patterns_found: usize,
20 pub patterns_applied: usize,
21}
22
23pub struct ZkcCompressor;
25
26impl ZkcCompressor {
27 pub fn new() -> Self {
28 ZkcCompressor
29 }
30
31 pub fn compress(&self, shard: &Shard) -> crate::Result<CompressedShard> {
33 Ok(CompressedShard {
35 shard_id: shard.id,
36 data: shard.data.clone(),
37 stats: CompressionStats {
38 original_size: shard.data.len(),
39 compressed_size: shard.data.len(),
40 ..Default::default()
41 },
42 })
43 }
44}
45
46impl Default for ZkcCompressor {
47 fn default() -> Self {
48 Self::new()
49 }
50}