可変参照
2022/2/17 21:39:00
or_insert
はキーに対する値への可変参照(&mut
V)を返すので、変数に入れて操作できる。
let val = hashmap.entry(key).or_insert(value);
//{valを操作}
fn main() {
let mut s = String::from("hello");
{
let r1 = &mut s;
r1.push_str(" world");
} // r1はここでスコープを抜けてdropするので、問題なく新しい参照を作ることができる
let r2 = &mut s;
r2.push_str("!!!!!");
println!("{}", r2); //hello world!!!!!
}
fn main() {
let mut s = String::from("hello");
let r1 = &mut s;
let r2 = &mut s; //error
println!("{}, {}", r1, r2);
}
|
4 | let r1 = &mut s;
| ------ first mutable borrow occurs here
5 | let r2 = &mut s; //error
| ^^^^^^ second mutable borrow occurs here
6 |
7 | println!("{}, {}", r1, r2);
| -- first borrow later used here