Port of Python's difflib library to Rust. It's provide all necessary tools for comparing word sequences.
Simply add difflib to your dependencies block in Cargo.toml
[dependencies]
difflib = "0.4.0"Documentation is available at https://github.com/DimaKudosh/difflib/wiki
externcrate difflib;use difflib::differ::Differ;use difflib::sequencematcher::SequenceMatcher;fnmain(){// unified_difflet first_text = "one two three four".split(" ").collect::<Vec<&str>>();let second_text = "zero one tree four".split(" ").collect::<Vec<&str>>();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_difflet 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_matcheslet words = vec!["ape","apple","peach","puppy"];let result = difflib::get_close_matches("appel", words,3,0.6);println!("{:?}", result);//Differ exampleslet differ = Differ::new();let diff = differ.compare(&first_text,&second_text);for line in&diff {println!("{:?}", line);}//SequenceMatcher examplesletmut 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());}