#diff-patch #slice #lcs-diff #longest-subsequence #vec #reproduce #diff-algorithm #wu #longest-common-subsequence

slice-diff-patch

Library crate providing utility functions for diff and patch of slices

14 releases (9 stable)

Uses new Rust 2024

1.3.1 Nov 13, 2025
1.2.4 May 10, 2025
1.2.3 Aug 6, 2024
1.2.2 Jul 22, 2024
0.3.0 Feb 7, 2022

#632 in Algorithms


Used in kifi

MIT license

18KB
359 lines

Features

Example

use 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);

References

Dependencies

~93KB