Namara

毎日コード。手助けなし。

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する動作は保ったまま、修正してください。

答え

abvに対する2つの同時可変借用であり — Rustはこれを許しません。どちらの借用も保持し続ける必要はなく、メソッドを直接呼び出せば十分です:

fn main() {
    let mut v = vec![1, 2, 3];
    v.push(4);
    v.push(5);
}