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}