Namaran

Code daily. Without assist.

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を実装してください。可変参照abが指している値を入れ替えます。

Reference
fn swap_values(a: &mut i32, b: &mut i32) {
    let tmp = *a;
    *a = *b;
    *b = tmp;
}

*a*bでそれぞれの参照先の値を読み書きします。abは同時に有効な2つの可変参照ですが、これは異なる変数を指しているために借用チェッカーが許してくれます(同じ変数への2つの可変参照はコンパイルエラーになります)。これは参考実装であり、唯一の正解ではありません — 実務では自作せずに標準ライブラリのstd::mem::swap(a, b)を使うのが普通です。