Namara

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

2026-08-21

borrow.rs

fn push_and_print(v: &mut Vec<i32>) {
    let first = &v[0];
    v.push(42);
    println!("{}", first);
}

このコードはコンパイルできません。出力される値が元の先頭要素のままになるようにして、修正してください。

答え

firstvを不変借用していますが、v.pushには可変借用が必要で、しかもprintln!の時点でまだfirstは生きています。i32Copyなので、参照ではなく値を取るようにしましょう:let first = v[0]; — これでpushもprintも自由に行えます。