References (Comprehensive Rust)

Comprehensive Rustという、GoogleAndroidチームが執筆したドキュメントがある。
4日かけてRustを包括的に学ぶ目的のものなのだが、これをチラチラ読んでいる。
今日は1日目の午前中のカリキュラムのうち、Referencesより。
(全4日をそれぞれMorningとAfternoonで分けて実施する想定になっているみたい。)

コード

Rustは参照を操作できる(という言い方でいいのかはわからない)ようで、以下のように書くことができる。

fn main() {
    let mut x: i32 = 10;
    let ref_x: &mut i32 = &mut x;
    *ref_x = 20;
    println!("x: {x}");
}

CやC++に馴染みのある方ならすぐにわかるのだろうけれど、私の場合は多少考えてしまった。 ref_xという変数が変数xの参照をバインドして、その参照先を20に変更することで結果としてx自体の値が変更された・・という理解*1
この辺はC言語をやってこなかったことを多少後悔。*2

*1:多分、「参照」「値」という言葉自体の使い方を誤っている気はしている

*2:昔、Qiitaで「参照渡し・値渡し」という言葉で喧々諤々のコメントとなった記事があったことを思い出す。