Similar is a dependency free crate for Rust that implements different diffing algorithms and high level interfaces for it. It is based on the pijulimplementation of the Patience algorithm and inherits some ideas from there. It also incorporates the Myer's diff algorithm which was largely written by Brandon Williams. This library was built for theinsta snapshot testing library.
usesimilar::{ChangeTag,TextDiff};
fnmain(){
letdiff =TextDiff::from_lines(
"Hello World\nThis is the second line.\nThis is the third. ",
"Hallo Welt\nThis is the second line.\nThis is life.\nMoar and more ",
);
forchangeindiff.iter_all_changes(){
letsign =matchchange.tag(){
ChangeTag::Delete=>"-",
ChangeTag::Insert=>"+",
ChangeTag::Equal=>"",
};
print!("{}{}",sign, change);
}
}
- Myer's diff
- Patience diff
- Hunt–McIlroy / Hunt–Szymanski LCS diff
- Diffing on arbitrary comparable sequences
- Line, word, character and grapheme level diffing
- Text and Byte diffing
- Unified diff generation
- instasnapshot testing library
- similar-assertsassertion library
- Documentation
- Issue Tracker
- Examples
- License:Apache-2.0