extern crate difflib; use difflib::differ::Differ; use difflib::sequencematcher::SequenceMatcher; fn main() { // unified_diff let first_text = "one two three four".split(" ").collect::>(); let second_text = "zero one tree four".split(" ").collect::>(); let diff = difflib::unified_diff( &first_text, &second_text, "Original", "Current", "2005-01-26 23:30:50", "2010-04-02 10:20:52", 3, ); for line in &diff { println!("{:?}", line); } //context_diff let diff = difflib::context_diff( &first_text, &second_text, "Original", "Current", "2005-01-26 23:30:50", "2010-04-02 10:20:52", 3, ); for line in &diff { println!("{:?}", line); } //get_close_matches let words = vec!["ape", "apple", "peach", "puppy"]; let result = difflib::get_close_matches("appel", words, 3, 0.6); println!("{:?}", result); //Differ examples let differ = Differ::new(); let diff = differ.compare(&first_text, &second_text); for line in &diff { println!("{:?}", line); } //SequenceMatcher examples let mut matcher = SequenceMatcher::new("one two three four", "zero one tree four"); let m = matcher.find_longest_match(0, 18, 0, 18); println!("{:?}", m); let all_matches = matcher.get_matching_blocks(); println!("{:?}", all_matches); let opcode = matcher.get_opcodes(); println!("{:?}", opcode); let grouped_opcodes = matcher.get_grouped_opcodes(2); println!("{:?}", grouped_opcodes); let ratio = matcher.ratio(); println!("{:?}", ratio); matcher.set_seqs("aaaaa", "aaaab"); println!("{:?}", matcher.ratio()); }