seqcompress/
lib.rs

1mod compressor;
2mod decompressor;
3
4use std::io::{BufRead, Read, Write};
5
6pub use compressor::Compressor;
7pub use decompressor::Decompressor;
8
9pub fn compress(compress: impl Read, output: impl Write) -> std::io::Result<()> {
10    let mut compressor = Compressor::new(compress);
11
12    compressor.compress(output)?;
13
14    Ok(())
15}
16
17pub fn decompress(compressed: impl BufRead, output: impl Write) -> std::io::Result<()> {
18    let decompressor = Decompressor::new(compressed);
19
20    decompressor.decompress(output)?;
21
22    Ok(())
23}
24
25#[no_mangle]
26pub fn compress_bytes(to_compress: &[u8]) -> std::io::Result<Vec<u8>> {
27    let mut output = vec![];
28
29    compress(to_compress, &mut output)?;
30
31    Ok(output)
32}
33
34#[no_mangle]
35pub fn decompress_bytes(compressed: &[u8]) -> std::io::Result<Vec<u8>> {
36    let mut output = vec![];
37
38    decompress(compressed, &mut output)?;
39
40    Ok(output)
41}