1 个不稳定版本
0.1.0 | 2020年4月7日 |
---|
#58 in #delta
16KB
386 代码行
Rust FFI 绑定 librsync2
动态链接到 librsync2 / librsync-dev
功能
- 整个文件 API
- 生成签名
- 将签名加载到内存
- 创建差异
- 将差异应用于文件
- 流式 API
- 错误处理
用法
文件 API
生成签名
签名存储在内存中,即使使用了整个文件 API。临时目录被用于保存值,直到它们在内存中初始化。
let path = PathBuf::from("some/file/location");
let (signature, stats) = Signature::new(&path).unwrap;
生成差异
差异文件是 rsync 差异文件的 Vec<u8>
表示。差异通过一个文件签名和一些新文件来计算
let path = PathBuf::from("some/file/location");
let (signature, stats) = Signature::new(&path).unwrap;
let some_new_path = PathBuf::from("the/file/changed/maybe");
let (delta, stats) = Delta::new(&mut signature, &some_new_path);
将差异应用于文件
let path = PathBuf::from("some/file/location");
let (signature, stats) = Signature::new(&path).unwrap;
let some_new_path = PathBuf::from("the/file/changed/maybe");
let (delta, stats) = Delta::new(&mut signature, &some_new_path);
// will output the value of the new file as a Vec<u8>
let new_file = patch_file(&path, delta);
依赖
~1.6–10MB
~107K SLoC