它實際上在地圖
沒有更改值。事實上;在地圖不再存在:
for (key, mut value) in map { /* ... */ }
println!("{:?}", map);
error[E0382]: use of moved value: `map`
--> src/main.rs:14:22
|
7 | for (key, mut value) in map {
| --- value moved here
...
14 | println!("{:?}", map);
| ^^^ value used here after move
|
= note: move occurs because `map` has type `std::collections::HashMap<u32, u32>`, which does not implement the `Copy` trait
你轉移所有權的地圖和所有鍵值,以迭代的。它消失了。請注意,該地圖甚至沒有聲明爲可變,所以您無法對其進行更改。
如果你想向修改所有的值,你可以:
let mut map: HashMap<u32, u32> = HashMap::new();
for (_key, value) in &mut map {
if *value == 0u32 {
*value = 1u32;
}
println!("{}", value);
}
注意我們現在有一個參考的鍵和值,而不是價值本身。
鐵鏽迭代器一般
這取決於什麼迭代器項目公開。如果有某種可變引用的迭代器,那麼是的。