multidiff 0.0.0

Diff an arbitary number of inputs
Documentation
use multidiff::multidiff;

fn assert_diff_matches(slice: &[&[u8]], expected: &[(u8, &[usize])]) {
    let actual: Vec<_> = multidiff(slice.iter().map(AsRef::as_ref)).collect();
    assert_eq!(actual.len(), expected.len());

    for (expected, actual) in expected.iter().zip(actual) {
        assert_eq!(expected.0, *actual.value);
        assert_eq!(expected.1, actual.appears_in);
    }
}

#[test]
fn empty() {
    assert_diff_matches(&[], &[]);
}

#[test]
fn single() {
    assert_diff_matches(
        &[b"abbc"],
        &[(b'a', &[0]), (b'b', &[0]), (b'b', &[0]), (b'c', &[0])],
    );
}

#[test]
fn simple() {
    assert_diff_matches(
        &[b"abc", b"bac", b"bca"],
        &[
            (b'a', &[0]),
            (b'b', &[0, 1, 2]),
            (b'a', &[1]),
            (b'c', &[0, 1, 2]),
            (b'a', &[2]),
        ],
    );
}