てけもぐ Tech 忘備録

rust の代入と可変参照の所感

対象

内容

他の言語だと、等号記号である "=" は代入で、値がコピーされるだけですが、rust は値のコピーというよりも所有権の移動の方が大きい。代入なんて所有権移行のオマケなんじゃなかろうか。

もうひとつ大事なのが、可変参照(&mut)をひとつしか持てないという所。

参照の規則

参照について議論したことを再確認しましょう:

  • 任意のタイミングで、一つの可変参照不変な参照いくつでものどちらかを行える。
  • 参照は常に有効でなければならない。

参照と借用 - The Rust Programming Language 日本語版

この、「ひとつの可変参照か不変な参照」の「どちらか」じゃないとダメ。自分的にはこれが rust のキモな気がする。

プログラムなんて、ヒープ上にとったデータをポインタを通してあれこれイジるということだろうから、これが全てに於いて利いてくる。

このページ(Rust の &mut を理解する!)とか読んで参考になった。

コンテナなどのデータ構造は、既存のものを使うか、unsafe を使ったものを別枠で注意深く設計して用意するか、そんな感じになるんじゃないかなぁ。