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);
}