Namaran

Code daily. Without assist.

2026-08-21

borrow.rs

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

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

Answer

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