關於迴圈的更多資訊
正如 Basics 中所提到的,我們可以使用任何實現 IntoIterator 和 for 迴圈的東西:
let vector = vec!["foo", "bar", "baz"]; // vectors implement IntoIterator
for val in vector {
println!("{}", val);
}
預期輸出:
foo
bar
baz
請注意,以這種方式迭代 vector 會消耗它(在 for 迴圈之後,vector 不能再次使用)。這是因為 IntoIterator::into_iter 移動 self。
IntoIterator 也由 &Vec<T> 和 &mut Vec<T> 實現(分別產生型別為 &T 和 &mut T 的值),這樣你就可以通過簡單地通過引用來阻止 vector 的移動:
let vector = vec!["foo", "bar", "baz"];
for val in &vector {
println!("{}", val);
}
println!("{:?}", vector);
請注意,val 的型別為 &&str,因為 vector 的型別為 Vec<&str>。