Closed CraftSpider closed 1 year ago
The current implementation stores the Box
as an AtomicPtr
, so an unsized type is not possible (a pointer to an unsized value being two usize
long).
As a workaround, you can add a level of boxing (eg Box<Box<dyn Trait>>
).
Yeah, I don't think we can do this without double-word CAS. double-word CAS is available on many architectures, but it is still somewhat esoteric, so I'd perfer that to be a separate crate!
It seems like
OnceBox
should be able to support unsized types, as theget_or_init
function expects the initializer to return a box, and stores the value behind a pointer. It would be nice to support unsized types here if there aren't any downsides to it.