2026-09-07
swap_values.rs
fn swap_values(a: &mut i32, b: &mut i32) {
// write this: swap the values that a and b point to
}
swap_valuesを実装してください。可変参照aとbが指している値を入れ替えます。
Reference
fn swap_values(a: &mut i32, b: &mut i32) {
let tmp = *a;
*a = *b;
*b = tmp;
}
*a・*bでそれぞれの参照先の値を読み書きします。aとbは同時に有効な2つの可変参照ですが、これは異なる変数を指しているために借用チェッカーが許してくれます(同じ変数への2つの可変参照はコンパイルエラーになります)。これは参考実装であり、唯一の正解ではありません — 実務では自作せずに標準ライブラリのstd::mem::swap(a, b)を使うのが普通です。