#已弃用 #数据 #原始 #lib-lzf

已弃用 lzf

已弃用!LZF的一个实现,一个非常小的数据压缩算法

12个版本 (1个稳定版)

1.0.0 2022年11月6日
0.3.2 2022年11月6日
0.3.1 2015年9月27日
0.2.3 2015年4月3日
0.1.0 2014年11月22日

#100 in #已弃用

Download history 162/week @ 2024-03-13 194/week @ 2024-03-20 179/week @ 2024-03-27 130/week @ 2024-04-03 123/week @ 2024-04-10 82/week @ 2024-04-17 162/week @ 2024-04-24 131/week @ 2024-05-01 108/week @ 2024-05-08 121/week @ 2024-05-15 103/week @ 2024-05-22 140/week @ 2024-05-29 150/week @ 2024-06-05 131/week @ 2024-06-12 127/week @ 2024-06-19 89/week @ 2024-06-26

每月 519 次下载
12 crate(8个直接)中使用

BSD-3-Clause

23KB
425 代码行

LZF - 一个非常小的数据压缩库


已弃用


LibLZF 是一个超级小且快速的压缩库,最初由 Marc Lehmann 编写。它用 C 语言编写,只包含 4 个文件。这是用 Rust 重写的版本。

我没有在 Rust 中重写整个库,而是使用了 Rust 的 Foreign Function Interface 并编写了一个包装器。整个 Rust 代码不到 50 行(是的,测试代码比实现代码多)。虽然我对当前的接口不太满意,但它非常容易使用。

我坐下来尝试理解原始的 C 代码,然后用(主要是)安全的 Rust 代码重写它。 最好的是:它仍然非常快(在某些基本基准测试中几乎与原始代码一样快)。 现在它由大约 200 行代码组成,可能和原始实现差不多。

构建

cargo build --release

用法

fn main() {
  let data = "foobar";

  let compressed = lzf::compress(data.as_bytes()).unwrap();

  let decompressed = lzf::decompress(&compressed, data.len()).unwrap();
}

测试

使用以下命令运行测试

cargo test

使用以下命令运行基准测试

cargo bench

贡献

如果您发现错误或想以其他方式帮助,请 打开一个问题
这是我发布的第一个 Rust 库,我还在学习。所以如果有人知道更好的 Rust 实现方式,我很乐意听到。

许可证

BSD。见 LICENSE
liblzf 同样是 BSD 许可。见 lzf.h

无运行时依赖