ひとつ人々に尋ねたいのだが、参照カウントが isize::MAX (64-bit マシンの場合はおそらく 2^63-1) を越えたとき、エラーを返した方がいいと思う? それとも panic した方がいい?
いま refcount めいたものを自前で実装する破目になっているのだが、どうするか悩んでいる。
ちなみに std::rc::Rc は refcount がオーバーフローしそうになると abort する
じゃあなんで abort を選択しないのかというと、ある種のロック的な用途を想定しているので、人々が永久にロックするなどの目的で無秩序にロックオブジェクトを forget() する可能性を考えていて、リークがあるなら「メモリ上には isize::MAX 個のオブジェクトは乗らないでしょw」は通用しないかなと……
たとえばこれはまあ利用者が悪い気がしないでもないけど、 long running なサーバや daemon で定期的に発生するジョブが継続的にロックを大量にリークし続けたらどうなるだろうか…… みたいなことです
64-bit ならそれでもまあありえないよねという気がするんだけど、16-bit アーキテクチャで同じこと言えるか……? という気持ちになっています (なぜなら Rust の動作環境は最低でも 16-bit 以上のアーキテクチャということになっていた気がするので)
や、でもリークするならそこは流石に注意しろよということで precondition 扱いして panic させていいかなぁ……