私は、単語の出現頻度を計算するプログラムを作成しています。これは私のコードの一部です。「一度に複数回変更可能なものを借りることはできません」if-else
// hm is a HashMap<&str, u32>
if let Some(val) = hm.get_mut(tt) {
*val += 1u32;
} else {
hm.insert(tt.clone(), 1u32);
}
そして私は...
error: cannot borrow `hm` as mutable more than once at a time [E0499]
hm.insert(tt.clone(), 1u32);
^~
note: first mutable borrow occurs here
if let Some(val) = hm.get_mut(tt) {
^~
note: first borrow ends here
}
^
help: run `rustc --explain E0499` to see a detailed explanation
私はelse
スコープの外hm.insert()
を移動することで、これをバイパスすることができましたが、それは「非プログラム的」な方法のようなものだ...私はmatch
を使用してみましたが、同じエラー(明らかに)が起きました。
私はこの問題を解決するにはどうすればよいですか?
これは本当に問題を解決するためのエレガントな方法です。ありがとう、仲間、そして私はEntry APIのために深く掘り下げます –
これは興味深いです。あなたは、「借りたものはぎざぎざの縁を持つことはできません」という意味を明確にすることはできますか? –
「ここにサビの現在のBDfLです」RustにはBDFLがありません。 –