rust-args-parser 2.0.0

Tiny, fast, callback-based CLI argument parser for Rust
Documentation
#[must_use]
pub fn levenshtein(a: &str, b: &str) -> usize {
    let (n, m) = (a.len(), b.len());
    if n == 0 {
        return m;
    }
    if m == 0 {
        return n;
    }
    let mut prev: Vec<usize> = (0..=m).collect();
    let mut curr: Vec<usize> = vec![0; m + 1];
    for (i, ca) in a.chars().enumerate() {
        curr[0] = i + 1;
        for (j, cb) in b.chars().enumerate() {
            let cost = usize::from(ca != cb);
            curr[j + 1] = core::cmp::min(core::cmp::min(curr[j] + 1, prev[j + 1] + 1), prev[j] + cost);
        }
        core::mem::swap(&mut prev, &mut curr);
    }
    prev[m]
}