1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2015年9月28日

#6 in #patience

8KB
151

此软件包用于计算 耐心差异,这种差异的计算比普通差异更费力,但通常更易于人类阅读。

差异描述了两个列表 ab 之间的差异;也就是说,ab 之间的差异描述了如何通过插入、删除或保留元素从 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;
  }

耐心差异是如何计算的

一个“普通”的差异基于 ab 之间的最长公共子序列。耐心差异非常相似,但首先在 ab唯一 元素之间找到最长公共子序列,以找到“明确的”匹配。然后,对匹配元素之间的范围递归计算耐心差异。

您可以在 Bram Cohen(耐心差异的“发现者”)的网站上用他自己的话描述耐心差异 这里

依赖项

~10KB