mastodon.cardina1.red は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。

サーバーの情報

3
人のアクティブユーザー

Rc::from_raw のコストは十分小さいと考えていいのかな

Rc::into_raw() でリークさせた *const Rc<_> に対して、元の Rc の所有権を消費することなく clone して新たな Rc を作りたいんだけど、一旦 Rc::from_raw() で戻してから clone して改めて into_raw() する必要があるのか?

Rc::as_ptr からでは Rc の復元ができないっぽいんだよな (refcount 情報が残っていないのでそれはそう)

かといって Box<Rc<T>> を作っといて *mut Rc<T> を保持するのも余計なアロケーションが増えて嫌だし

Add strong_count mutation methods to Rc by mystor · Pull Request #83476 · rust-lang/rust · GitHub
github.com/rust-lang/rust/pull

こっちを使えばええじゃろと。なるほど?

GitHubAdd strong_count mutation methods to Rc by mystor · Pull Request #83476 · rust-lang/rustmystor

ピンとこないのが、「一度の Rc::into_raw() で作成された *const T に複数回 Rc::from_raw() を呼び出すのは (仕様として) 許されているのか」なのよね。許されていそうな書きぶりではあるが明示はなさそうだし、仮に「Rc::into_raw() は Rc のインスタンスごとに別の値を返す可能性がある」という仕様だとしたら困る (そうではないとは思うが)。