| Crates.io | slice-diff-patch |
| lib.rs | slice-diff-patch |
| version | 1.3.1 |
| created_at | 2022-02-05 18:01:43.490975+00 |
| updated_at | 2025-11-13 19:16:46.19948+00 |
| description | Library crate providing utility functions for diff and patch of slices |
| homepage | https://github.com/qtfkwk/slice-diff-patch |
| repository | https://github.com/qtfkwk/slice-diff-patch |
| max_upload_size | |
| id | 527520 |
| size | 24,487 |
Change enum as an abstraction for diff::Result, lcs_diff::DiffResult, and
wu_diff::DiffResult;diff_changes(), diff_diff(), lcs_changes(), lcs_diff(), wu_changes(), and
wu_diff() functions to calculate or process diffs between a and b slices via LCS (Longest
Common Subsequence) or Wu diff algorithms into a Vec<Change>patch() function to reproduce b from the a slice and Vec<Change>insert() and remove() functions to enable writing a custom changes functionuse slice_diff_patch::*;
let a = vec!["one", "TWO", "three", "four"];
let b = vec!["zero", "one", "two", "four"];
let diff = diff_diff(&a, &b);
assert_eq!(
diff,
vec![
Change::Insert((0, "zero")),
Change::Remove(2),
Change::Update((2, "two")),
],
);
assert_eq!(patch(&a, &diff), b);
let lcs = lcs_diff(&a, &b);
assert_eq!(
lcs,
vec![
Change::Insert((0, "zero")),
Change::Update((2, "two")),
Change::Remove(3),
],
);
assert_eq!(patch(&a, &lcs), b);
let wu = wu_diff(&a, &b);
assert_eq!(
wu,
vec![
Change::Insert((0, "zero")),
Change::Remove(2),
Change::Update((2, "two")),
],
);
assert_eq!(patch(&a, &wu), b);