關於迴圈的更多資訊
正如 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>
。