2026-08-20
double_borrow.rs
fn main() {
let mut v = vec![1, 2, 3];
let a = &mut v;
let b = &mut v;
a.push(4);
b.push(5);
}
このコードはコンパイルできません。4と5の両方をvにpushする動作は保ったまま、修正してください。
答え
aとbはvに対する2つの同時可変借用であり — Rustはこれを許しません。どちらの借用も保持し続ける必要はなく、メソッドを直接呼び出せば十分です:
fn main() {
let mut v = vec![1, 2, 3];
v.push(4);
v.push(5);
}