This crate provides the [Change
] enum as an abstraction for [diff::Result
],
[lcs_diff::DiffResult
], and [wu_diff::DiffResult
]; the [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>
], and the [patch()
] function to reproduce b
from the a
slice and
[Vec<Change>
].
```Rust use slicediffpatch::*;
let a = vec!["one", "TWO", "three", "four"]; let b = vec!["zero", "one", "two", "four"];
let diff = diffdiff(&a, &b); asserteq!( diff, vec![ Change::Insert((0, "zero")), Change::Remove(2), Change::Update((2, "two")), ], ); assert_eq!(patch(&a, &diff), b);
let lcs = lcsdiff(&a, &b); asserteq!( lcs, vec![ Change::Insert((0, "zero")), Change::Update((2, "two")), Change::Remove(3), ], ); assert_eq!(patch(&a, &lcs), b);
let wu = wudiff(&a, &b); asserteq!( wu, vec![ Change::Insert((0, "zero")), Change::Remove(2), Change::Update((2, "two")), ], ); assert_eq!(patch(&a, &wu), b); ```
See also:
Changelog:
Clone
on [Change
]Update
variant on [Change
]