6个版本 (重大更改)
0.10.0 | 2022年8月15日 |
---|---|
0.9.0 | 2022年8月15日 |
0.8.0 | 2022年8月15日 |
0.7.0 | 2022年8月15日 |
0.5.0 | 2022年8月14日 |
#721 in 压缩
用于 serbzip
67KB
1.5K SLoC
serbzip-core
serb.zip的库包。
入门指南
添加依赖项
cargo add serbzip-core
压缩和解压缩一些文本
我们将使用巴尔干oid编解码器来演示这个例子。
示例代码假设我们已经有 ../dict.blk
和 ../test_data/antigonish.txt
来进行操作。
use std::fs::File;
use std::io;
use std::io::BufReader;
use serbzip_core::codecs::balkanoid::{Balkanoid, Dict};
use serbzip_core::codecs::Codec;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// this codec needs a dictionary to work from
let mut dict_reader = BufReader::new(File::open("../dict.blk")?);
let dict = Dict::read_from_binary_image(&mut dict_reader)?;
let codec = Balkanoid::new(&dict);
// 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(())
}
依赖项
~255KB