array::IntoIter даёт значения массива

Изменения в новых версиях / Rust 1.51

let arr = [String::from("a"), String::from("b")];

// *** before: ***
// an array gave references only, and values had to be cloned
for s in arr.iter() {
    let owned = s.clone();
    println!("{}", owned);
}

// *** in version 1.51: ***
for s in std::array::IntoIter::new(arr) {
    let owned: String = s;   // the value is taken over without a clone
    println!("{}", owned);
}