2026-08-21
borrow.rs
fn push_and_print(v: &mut Vec<i32>) {
let first = &v[0];
v.push(42);
println!("{}", first);
}
このコードはコンパイルできません。出力される値が元の先頭要素のままになるようにして、修正してください。
答え
firstはvを不変借用していますが、v.pushには可変借用が必要で、しかもprintln!の時点でまだfirstは生きています。i32はCopyなので、参照ではなく値を取るようにしましょう:let first = v[0]; — これでpushもprintも自由に行えます。