pub fn diff<T: Eq + Hash>(old: &[T], new: &[T]) -> Difference
Expand description
Finds difference between two slices of objects using Paul Heckel’s algorithm.
§Examples
Example from the “A technique for isolating differences between files”.
use hdiff::*;
let old = vec!["MUCH", "WRITING", "IS", "LIKE", "SNOW", ",",
"A", "MASS","OF", "LONG", "WORDS", "AND",
"PHRASES", "FALLS", "UPON", "THE", "RELEVANT",
"FACTS", "COVERING", "UP", "THE", "DETAILS", "."];
let new = vec!["A", "MASS", "OF", "LATIN", "WORDS", "FALLS",
"UPON", "THE", "RELEVANT", "FACTS", "LIKE", "SOFT",
"SNOW", ",", "COVERING", "UP", "THE", "DETAILS", "."];
let answer = vec![Delete(0), Delete(1), Delete(2), Delete(9),
Delete(11), Delete(12), Move(6, 0), Move(7, 1),
Move(8, 2), Create(3), Move(10, 4), Move(13, 5),
Move(14, 6), Move(15, 7), Move(16, 8), Move(17, 9),
Move(3, 10), Create(11), Move(4, 12), Move(5, 13)];
assert_eq!(answer, diff(&old, &new));