core::rc::{Rc, Weak} がいずれも (少なくともダイレクトには) 生ポと同じサイズなのは頑張ってるよなぁ
まあ俺は NonNull<T> を使うがな!!!! (爆死フラグ)
Weak が絶対に dangle しない (Rc が破棄されない) ことを保証されている場面で Weak 使うとオーバーヘッドあるじゃんみたいな気持ちがある、一方で NonNull<T> から Rc<T> は作れないから Rc を作りたくなったときどうしようというのもある
たとえば Rc を作っといて unsafe に strong count を decrement するという最悪アクションは考えられるけど、これやると mutability まわりの判定まで狂うので絶対に駄目