所有権に基づいたリソース管理(Ownership Based Resource Management, OBRM)の危険性について
OBRM(またの名をRAII: Resource Acquisition Is Initialization)とは、Rustにおいて 関連性の深い概念です。特に標準ライブラリと密接に関与します。
このパターンを簡単に説明すると次のようになります。「リソースを獲得するには
そのリソースを管理するオブジェクトを作成し、リソースを解放するにはその
オブジェクトを単に破棄すればリソースがクリーンアップされる。」
いうものです。このように管理される最も一般的な「リソース」は単なるメモリです。
Box
、Rc
、その他std::collections
の諸々全ては、メモリの管理を便利にするためのものです。
Rustの場合、メモリの管理において一貫したGCに頼るということができないので、これら
は特に重要になります。大事なことなので強調しましょう。この「管理」という考え方は
Rustの根幹です。それは何もメモリに限った話ではありません。スレッド、ファイル、
ソケットといったほぼ全てのリソースがこういった考え方に基づくAPIを通して扱うように
できています。