serbzip-core
The library package for serb.zip.
sh
cargo add serbzip-core
We'll use the Balkanoid codec for this example.
The sample code assumes we have ../dict.blk
and ../test_data/antigonish.txt
to play with.
```rust use std::fs::File; use std::io; use std::io::BufReader; use serbzipcore::codecs::balkanoid::{Balkanoid, Dict}; use serbzipcore::codecs::Codec;
fn main() -> Result<(), Box
// compress a line and check the output
let input_line = "Ah, distinctly I remember it was in the bleak December";
let compressed_line = codec.compress_line(input_line);
assert_eq!(compressed_line, "H, dstnctly I rmmbr t ws n th blk Dcmbr");
// expand the line; check that it matches the original
let expanded_line = codec.expand_line(&compressed_line)?;
assert_eq!(input_line, expanded_line);
// codecs also have helper methods for parsing I/O streams
let mut input_reader = BufReader::new(File::open("../test_data/antigonish.txt")?);
let mut output_writer = io::Cursor::new(Vec::new());
codec.compress(&mut input_reader, &mut output_writer)?;
let compressed_document = String::from_utf8(output_writer.into_inner())?;
assert_ne!("", compressed_document);
Ok(())
} ```