rust の代入と可変参照の所感
対象
内容
他の言語だと、等号記号である "=" は代入で、値がコピーされるだけですが、rust は値のコピーというよりも所有権の移動の方が大きい。代入なんて所有権移行のオマケなんじゃなかろうか。
もうひとつ大事なのが、可変参照(&mut)をひとつしか持てないという所。
参照の規則
参照について議論したことを再確認しましょう:
- 任意のタイミングで、一つの可変参照か不変な参照いくつでものどちらかを行える。
- 参照は常に有効でなければならない。
参照と借用 - The Rust Programming Language 日本語版
この、「ひとつの可変参照か不変な参照」の「どちらか」じゃないとダメ。自分的にはこれが rust のキモな気がする。
プログラムなんて、ヒープ上にとったデータをポインタを通してあれこれイジるということだろうから、これが全てに於いて利いてくる。
このページ(Rust の &mut を理解する!)とか読んで参考になった。
コンテナなどのデータ構造は、既存のものを使うか、unsafe を使ったものを別枠で注意深く設計して用意するか、そんな感じになるんじゃないかなぁ。