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