Levenshtein Distance Alignment

http://rosettacode.org/wiki/Levenshtein_distance/Alignment
since you're not changing c1 and c2 but only reading the strings by char, you could probably avoid reallocating them in a Vec and work directly with the iterator, i.e.

    let mut c1 = s1.chars(); // using the iterator is most likely need c1 to be mutable

    // ... later instead of c1[row] you can do c1.nth[row].unwrap() 
[rustdocs for nth](http://doc.rust-lang.org/std/str/struct.Chars.html#method.nth)