1 个不稳定版本
使用旧的 Rust 2015
| 0.1.0 | 2015年9月28日 | 
|---|
#6 in #patience
8KB
151 行
此软件包用于计算 耐心差异,这种差异的计算比普通差异更费力,但通常更易于人类阅读。
差异描述了两个列表 a 和 b 之间的差异;也就是说,a 和 b 之间的差异描述了如何通过插入、删除或保留元素从 a 转换到 b。
为什么使用耐心差异?
耐心差异通常比普通基于最长公共子序列的差异更易读。例如,如果你从
int func_1() {
    return 1;
}
int func_2() {
    return 2;
}
变为
int func_1() {
    return 1;
}
int func_new() {
    return 0;
}
int func_2() {
    return 2;
}
这两个行序列之间的最长公共子序列差异是
  int func_1() {
      return 1;
+ }
+
+ int func_new() {
+     return 0;
  }
  int func_2() {
      return 2;
  }
另一方面,它们的耐心差异是
  int func_1() {
      return 1;
  }
+ int func_new() {
+     return 0;
+ }
+
  int func_2() {
      return 2;
  }
耐心差异是如何计算的
一个“普通”的差异基于 a 和 b 之间的最长公共子序列。耐心差异非常相似,但首先在 a 和 b 的 唯一 元素之间找到最长公共子序列,以找到“明确的”匹配。然后,对匹配元素之间的范围递归计算耐心差异。
您可以在 Bram Cohen(耐心差异的“发现者”)的网站上用他自己的话描述耐心差异 这里。
依赖项
~10KB