所有権の問題
権利には義務が伴う、ってことで、所有権とは「破棄の義務」ってことになる。所有権を獲得するって事は、破棄の義務を背負うってことだ。
Rustの所有権モデルとか(いやっ、よく知らないけど^^;)、ユニークポインターだと、所有者を単一にしているようだけど、それでいいんか? と思う。
例えば、ポインターで繋いだ有向グラフを考えると、ノードは複数ノードから指される。どのノードからも指されなくなった=非可達になったら破棄(=解放、回収)する場合、普通は参照カウンタを使う。この例では、明確な所有者はいない。ゆるい共同所有方式だ。
つまり、あるノードを指している全てのノードは、破棄の義務を負っていると言えるが、自分で破棄するとは限らない。たまたま最後の参照を消す場合だけ破棄する必要がある。
「参照を消す」を一種の破棄と考えて、破棄の方法が二種類(放置と実際に破壊する)がある、と考えることも出来るか? でもスッキリしない。
「所有権=破棄の義務」という概念を導入するとして、単一所有者と共同所有の2つがあるのか、それとも単一所有者モデルだけで押し切れるのか?