r3-os/r3

Replace `ZeroInit` with `bytemuck::Zeroable`

yvt opened this issue · 1 comments

yvt commented

r3_core::utils::ZeroInit should be replaced by bytemuck::Zeroable. The latter is derivable (which helps us remove some unsafe impls) and has a better Rust ecosystem compatibility.

Zeroable is missing the following implementations:

  • core::atomic::Atomic{Bool,{U,I}{8,16,32,64,size},Ptr<impl Sized>} (Lokathor/bytemuck#74)
  • Option<fn(Args...) -> R>
  • Option<&[mut ]_>
  • UnsafeCell<impl Zeroable> (Lokathor/bytemuck#148)
  • [impl Zeroable + Sized] Zeroable requires Sized
yvt commented

Merged in b6de1c0