An LCS based slice and string diffing implementation.
[dependencies] diff = "0.1"
extern crate diff; fn main() { let left = "foo\nbar\nbaz\nquux"; let right = "foo\nbaz\nbar\nquux"; for diff in diff::lines(left, right) { match diff { diff::Result::Left(l) => println!("-{}", l), diff::Result::Both(l, _) => println!(" {}", l), diff::Result::Right(r) => println!("+{}", r) } } }
prints
foo -bar baz +bar quux
diff
is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE, and LICENSE-MIT for details.