[][src]Function hdiff::diff

pub fn diff<T: Eq + Hash>(old: &[T], new: &[T]) -> Difference

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));