Rust

最近流行っているらしいRustの解説動画。半分くらいまで視聴。

Ownership/Borrowingという概念でポインタ周りの(潜在的)バグをコンパイル時に見つけたりできるようにしたらしい。発想としてはshared reference (SR; 共有参照?不変参照?とでも言うべきか)/mutable reference (MR; 可変参照?とでも)をうまく使い分けることでC++では未定義動作だった解放済みのアドレス参照を防いでるようだ。1つのオブジェクトに対してshared/mutableを同時に両方は使えないようにして、オブジェクトの参照と変更がお互いを気にしないで行われることを防いでいる(と自分は受け取った)。

また、Ownership概念を使うと、スレッドのmutationを明示的に行わなくてもよくなる?(Ownershipは非同期なスレッドであっても同時にはどちらか一方にしか与えられないから)。いちいちOwnershipのやり取りをしないといけないので実行速度が少し気になるが、どうなのだろうか。

そもそもOwnershipがどのようなものか、どのように付与しているのかがまだよく分かっていないので、機会があれば使用を検討して実際に使いながら理解していきたい。