No description
| .github/workflows | ||
| .vscode | ||
| assets | ||
| examples | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Similar: A Diffing Library
Similar is a dependency free crate for Rust that implements different diffing algorithms and high level interfaces for it. It is based on the pijul implementation of the Myer's and Patience algorithms and inherits some ideas from there. It was built for the insta snapshot testing library.
use similar::{ChangeTag, TextDiff};
fn main() {
let diff = 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",
);
for change in diff.iter_all_changes() {
let sign = match change.tag() {
ChangeTag::Delete => "-",
ChangeTag::Insert => "+",
ChangeTag::Equal => " ",
};
print!("{}{}", sign, change);
}
}
Screenshot
What's in the box?
- Myer's diff
- Patience diff
- Diffing on arbitrary comparable sequences
- Line, word, character and grapheme level diffing
- Text and Byte diffing
- Unified diff generation
License and Links
- Documentation
- Issue Tracker
- Examples
- License: Apache-2.0
