autocompress-rs

Build GitHub GitHub top language Crates.io Docs.rs

Automatically select suitable decoder from magic bytes or encoder from file extension. This library also provides I/O thread pool to perform decompression and compression in background threads.

Supported file formats

Feature flags

Example

```rust use autocompress::open; use std::io::{self, Read};

fn main() -> io::Result<()> { let mut buffer = Vec::new(); open("testfiles/plain.txt.xz")?.readtoend(&mut buffer)?; assert_eq!(buffer, b"ABCDEFG\r\n1234567"); Ok(()) } ```

I/O thread example

rust use autocompress::{iothread::IoThread, open, create, CompressionLevel}; use std::io::{prelude::*, self}; fn main() -> io::Result<()> { let thread_pool = IoThread::new(2); let mut threaded_reader = thread_pool.open("testfiles/plain.txt.xz")?; let mut threaded_writer = thread_pool.create("target/plain.txt.xz", CompressionLevel::Default)?; let mut buffer = Vec::new(); threaded_reader.read_to_end(&mut buffer)?; assert_eq!(buffer, b"ABCDEFG\r\n1234567"); threaded_writer.write_all(b"ABCDEFG\r\n1234567")?; Ok(()) }