#levenshtein #diff #patch

nightly liff

快速 Levenshtein 差分,尽可能快地使用 Levenshtein 实现

2 个版本

0.1.1 2021 年 12 月 19 日
0.1.0 2021 年 12 月 19 日

算法 中排名第 1800

每月下载量 21

MIT/Apache

16KB
351

CI

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