14 个版本 (稳定)
1.4.2 | 2024年4月15日 |
---|---|
1.4.1 | 2023年6月22日 |
1.4.0 | 2021年9月17日 |
1.3.1 | 2020年4月25日 |
0.1.2 | 2019年10月17日 |
#53 在 压缩
每月 292 次下载
用于 5 个 crate(4 个直接使用)
42KB
799 行
qbsdiff
快速且节省内存的与 bsdiff 4.x 兼容的增量压缩器和修补工具。
将依赖项添加到 Cargo.toml
[dependencies]
qbsdiff = "1.4"
构建命令
构建 qbsdiff
和 qbspatch
命令
$ cargo build --release --bins --features cmd
$ cd target/release
$ ./qbsdiff --help
$ ./qbspatch --help
安装命令到 $CARGO_HOME/bin
$ cargo install qbsdiff --features cmd
示例
通过将 patch
应用于 source
来生成目标流
use std::io;
use qbsdiff::Bspatch;
fn bspatch(source: &[u8], patch: &[u8]) -> io::Result<Vec<u8>> {
let patcher = Bspatch::new(patch)?;
let mut target = Vec::new();
// To preallocate target:
//Vec::with_capacity(patcher.hint_target_size() as usize);
patcher.apply(source, io::Cursor::new(&mut target))?;
Ok(target)
}
通过比较 source
和 target
来生成补丁数据
use std::io;
use qbsdiff::Bsdiff;
fn bsdiff(source: &[u8], target: &[u8]) -> io::Result<Vec<u8>> {
let mut patch = Vec::new();
Bsdiff::new(source, target)
.compare(io::Cursor::new(&mut patch))?;
Ok(patch)
}
请注意,qbsdiff
不会生成与 bsdiff
完全相同的补丁文件。仅保证补丁文件格式兼容。
依赖项
~2.1–2.8MB
~49K SLoC