You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is an extension of the design described in #5
TODO: Fill out details
pubunsafetraitTryFromBytes{// This can either default to `()` by dint of the custom derive emitting that,// or we can use associated type defaults once they're stable.#[doc(hidden)]typeContext:Default;#[doc(hidden)]fnis_bit_valid(ctx:&mutSelf::Context,ptr:NonNull<Self>) -> bool;fntry_read_from(bytes:&[u8]) -> Option<Self>whereSelf:Sized{let maybe_uninit = MaybeUninit::<Self>::read_from(bytes)?;let ptr = NonNull::from(&maybe_uninit).cast::<Self>();letmut ctx = <Self::ContextasDefault>::default();ifSelf::is_bit_valid(&mut ctx, ptr){unsafe{ maybe_uninit.assume_init()}}}}
Per @djkoloski, for rkyv's use case, the Context type might actually need to be constructible from the byte slice that's being parsed from, ie type Context: for<'a> From<&'a [u8]>.
The text was updated successfully, but these errors were encountered:
See also: #5 (comment)
This is an extension of the design described in #5
TODO: Fill out details
Per @djkoloski, for rkyv's use case, the
Context
type might actually need to be constructible from the byte slice that's being parsed from, ietype Context: for<'a> From<&'a [u8]>
.The text was updated successfully, but these errors were encountered: