01_roundtrip/
01_roundtrip.rs1mod common;
2
3use common::pseudo_random_bytes;
4use compression::{Algorithm, Decoder, Encoder};
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let input = pseudo_random_bytes(64 * 1024);
8 let split = input.len() / 2;
9
10 let mut encoder = Encoder::new(Algorithm::Lzfse)?;
11 let mut compressed = encoder.process(&input[..split])?;
12 compressed.extend(encoder.process(&input[split..])?);
13 compressed.extend(encoder.finish()?);
14
15 let mut decoder = Decoder::new(Algorithm::Lzfse)?;
16 let encoded_split = compressed.len() / 2;
17 let mut round_trip = decoder.process(&compressed[..encoded_split])?;
18 round_trip.extend(decoder.process(&compressed[encoded_split..])?);
19 round_trip.extend(decoder.finish()?);
20
21 assert_eq!(round_trip, input);
22 let input_len = input.len();
23 let compressed_len = compressed.len();
24 println!("input={input_len} compressed={compressed_len}");
25 println!("✅ compression stream round-trip OK");
26 Ok(())
27}