コンプ(compu)
Rust Compression library with generic interface
Features
All features are off by default.
This crate requires alloc
to be available with system allocator set.
brotli-c
- Enables brotli
interface using C library.
zlib-ng
- Enables zlib-ng
interface.
zlib
- Enables zlib
interface.
zlib-static
- Enables zlib
interface with static
feature.
zstd
- Enables zstd
interface.
Usage
Decode
Minimal example of using Decoder.
Use Interface
to create instance.
use compu::{Decoder, DecodeStatus, DecodeError};
fn example(decoder: &mut Decoder, input: &[u8]) -> Result<Vec<u8>, DecodeError> {
let mut output = Vec::with_capacity(1024);
loop {
let result = decoder.decode_vec(input, &mut output).status?;
match result {
DecodeStatus::NeedInput => panic!("Not enough input, incomplete data?"),
DecodeStatus::NeedOutput => output.reserve(1024),
DecodeStatus::Finished => {
decoder.reset();
break Ok(output)
}
}
}
}
Encode
Minimal example of using Encoder.
Use Interface
to create instance.
use compu::{Encoder, EncodeStatus, EncodeOp};
fn example(encoder: &mut Encoder, input: &[u8]) -> Vec<u8> {
let mut output = Vec::with_capacity(1024);
loop {
let result = encoder.encode_vec(input, &mut output, EncodeOp::Finish).status;
match result {
EncodeStatus::Continue => panic!("I wanted to finish but continue!?"),
EncodeStatus::NeedOutput => output.reserve(1024),
EncodeStatus::Finished => {
encoder.reset();
break output;
}
EncodeStatus::Error => {
panic!("unlikely")
}
}
}
}