mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-20 11:19:36 +00:00
135 lines
2.8 KiB
Markdown
135 lines
2.8 KiB
Markdown
# prettydiff
|
|
|
|
[](https://crates.io/crates/prettydiff)
|
|
[](https://docs.rs/prettydiff)
|
|
|
|
Side-by-side diff for two files in Rust. App && Library.
|
|
|
|
## Examples
|
|
|
|
### Slice diff
|
|
|
|
```rust
|
|
use prettydiff::diff_slice;
|
|
|
|
println!("Diff: {}", diff_slice(&[1, 2, 3, 4, 5, 6], &[2, 3, 5, 7]));
|
|
println!(
|
|
"Diff: {}",
|
|
diff_slice(&["q", "a", "b", "x", "c", "d"], &["a", "b", "y", "c", "d", "f"])
|
|
);
|
|
println!(
|
|
"Diff: {}",
|
|
diff_slice(&["a", "c", "d", "b"], &["a", "e", "b"])
|
|
);
|
|
```
|
|
|
|

|
|
|
|
Get vector of changes:
|
|
|
|
```rust
|
|
use prettydiff::diff_slice;
|
|
|
|
assert_eq!(
|
|
diff_slice(&["q", "a", "b", "x", "c", "d"], &["a", "b", "y", "c", "d", "f"]).diff,
|
|
vec![
|
|
DiffOp::Remove(&["q"]),
|
|
DiffOp::Equal(&["a", "b"]),
|
|
DiffOp::Replace(&["x"], &["y"]),
|
|
DiffOp::Equal(&["c", "d"]),
|
|
DiffOp::Insert(&["f"]),
|
|
]
|
|
);
|
|
```
|
|
|
|
### Diff line by chars or words
|
|
|
|

|
|
|
|
```rust
|
|
use prettydiff::{diff_chars, diff_words};
|
|
|
|
println!("diff_chars: {}", diff_chars("abefcd", "zadqwc"));
|
|
println!(
|
|
"diff_chars: {}",
|
|
diff_chars(
|
|
"The quick brown fox jumps over the lazy dog",
|
|
"The quick brown dog leaps over the lazy cat"
|
|
)
|
|
);
|
|
println!(
|
|
"diff_chars: {}",
|
|
diff_chars(
|
|
"The red brown fox jumped over the rolling log",
|
|
"The brown spotted fox leaped over the rolling log"
|
|
)
|
|
);
|
|
println!(
|
|
"diff_chars: {}",
|
|
diff_chars(
|
|
"The red brown fox jumped over the rolling log",
|
|
"The brown spotted fox leaped over the rolling log"
|
|
)
|
|
.set_highlight_whitespace(true)
|
|
);
|
|
println!(
|
|
"diff_words: {}",
|
|
diff_words(
|
|
"The red brown fox jumped over the rolling log",
|
|
"The brown spotted fox leaped over the rolling log"
|
|
)
|
|
);
|
|
println!(
|
|
"diff_words: {}",
|
|
diff_words(
|
|
"The quick brown fox jumps over the lazy dog",
|
|
"The quick, brown dog leaps over the lazy cat"
|
|
)
|
|
);
|
|
```
|
|
|
|
### Diff lines
|
|
|
|

|
|
|
|
```rust
|
|
use prettydiff::diff_lines;
|
|
|
|
let code1_a = r#"
|
|
void func1() {
|
|
x += 1
|
|
}
|
|
|
|
void func2() {
|
|
x += 2
|
|
}
|
|
"#;
|
|
let code1_b = r#"
|
|
void func1(a: u32) {
|
|
x += 1
|
|
}
|
|
|
|
void functhreehalves() {
|
|
x += 1.5
|
|
}
|
|
|
|
void func2() {
|
|
x += 2
|
|
}
|
|
|
|
void func3(){}
|
|
"#;
|
|
println!("diff_lines:");
|
|
println!("{}", diff_lines(code1_a, code1_b));
|
|
```
|
|
|
|
## App
|
|
|
|
This crate also provides app for side-by-side diff:
|
|
|
|
```sh
|
|
cargo install prettydiff
|
|
prettydiff left_file.txt right_file.txt
|
|
```
|
|
|
|
 |