2
私は2つのHashMap
を持っており、特定の条件下で値を入れ替えたいと思っています。キーが2番目のHashMap
に存在しない場合は、挿入する必要があります。値段が高すぎるので値を複製したくない。2つのハッシュマップ間の値を入れ替えます
次のように動作しない(簡体字)重要なコードは次のとおりです。
( Rust Playgroundオン)match hm1.get_mut(&1) {
Some(ref mut x) => match hm.entry(1) {
Entry::Occupied(mut y) => if y.get().replace {
mem::swap(x, &mut y.get_mut());
},
Entry::Vacant(y) => {
y.insert(mem::replace(x, dummy));
}
},
None => {}
}
私はエラーを取得する:
error[E0597]: `y` does not live long enough
--> src/main.rs:28:9
|
23 | mem::swap(x, &mut y.get_mut());
| - borrow occurs here
...
28 | },
| ^`y` dropped here while still borrowed
29 | None => {}
30 | }
| - borrowed value needs to live until here
私は本当に混乱していますこれについては、私はそれを修正する方法はありません。 Entry
をmatch hm.get_mut(1)
に置き換えた場合、一致がHashMap
をそのまま借りてくるため、None
ケースには挿入できません。