2 个版本
0.1.1 | 2021 年 12 月 19 日 |
---|---|
0.1.0 | 2021 年 12 月 19 日 |
在 算法 中排名第 1800
每月下载量 21 次
16KB
351 行
Liff 🍃
使用 Levenshtein 算法计算两个向量之间的差分。
比其他 crate 更快。尝试 cargo bench
来查看差异。
用法
Levenshtein 是 O(n1n2) 时间复杂度和空间复杂度,因此你不希望用它处理大块数据。但你可以用它处理好的文本内容!
let from: Vec<u8> = input_text_from.as_bytes().into();
let to: Vec<u8> = input_text_to.as_bytes().into();
let diff = diff::diff::<u8>(&from, &to);
使用 diff 输出
diff 输出可以用作代码其他部分的补丁。
let res = apply::apply(from, &diff);
// res should be equals to "to"
写入临时压缩补丁
diff 补丁比我们能做到的还要大。你可以压缩它,这就是我们导出文件时所做的。你可以使用这些函数读取和写入 diff。
diffio::write(std::path::Path::new("diff.d"), diff.clone());
let diff = diffio::read(std::path::Path::new("diff.d"));
许可证
许可协议为 Apache 许可证,版本 2.0 或 MIT 许可证,任选其一。除非你明确声明,否则任何有意提交给此 crate 的贡献,如 Apache-2.0 许可证所定义,应按照上述方式双许可,不得附加任何额外条款或条件。
依赖项
~110KB