1个不稳定版本

使用旧的Rust 2015

0.1.0 2020年7月26日

#719压缩

23 每月下载次数
用于 dmgwiz

MIT 协议

135KB
2.5K SLoC

C 2.5K SLoC // 0.3% comments Rust 118 SLoC // 0.1% comments

lzfse-rs

Rust对https://github.com/lzfse/lzfse上的LZFSE参考实现的绑定。

文档

# Cargo.toml
[dependencies]
lzfse = "0.1.0"

lib.rs:

Rust对LZFSE参考实现的绑定

https://github.com/lzfse/lzfse

示例

use lzfse::{decode_buffer, encode_buffer};

let input: &[u8] = &[0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE,
                     0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE,
                     0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE,
                     0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE,
                     0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE,
                     0xF, 0xE, 0xE, 0xD, 0xF, 0xA, 0xC, 0xE];

// compression
// in the worst case lzfse will fallback to return the input uncompressed
// and add a magic header to indicate this. that requires 12 bytes (see lzfse_encode.c)
let max_outlen = input.len() + 12;
let mut compressed = vec![0; max_outlen];

let bytes_out = encode_buffer(&input[..], &mut compressed[..]).unwrap();
assert!(bytes_out < input.len());

// decompression
// need to allocate 1 byte more since lzfse returns input.len() if the buffer is too small
let mut uncompressed = vec![0; input.len() + 1];
let bytes_in = decode_buffer(&compressed[0..bytes_out], &mut uncompressed[..]).unwrap();

assert_eq!(bytes_in, input.len());
assert_eq!(input[..], uncompressed[..bytes_in]);

依赖项

~225KB