pub struct BytemuckCodec;Expand description
Codec for plain-old-data types.
Zero-copy on the read path: Decode::Output<'a> is &'a E,
pointing directly into the envelope’s payload bytes (which are
16-byte aligned by the wire-format invariant — see
crate::wire).
E must implement AnyBitPattern (every bit pattern is a valid
value of E) and NoUninit (no padding/uninitialized bytes).
In practice this means #[repr(C)] POD types with no padding.
§Example
ⓘ
#[repr(C)]
#[derive(Clone, Copy, bytemuck::AnyBitPattern, bytemuck::NoUninit)]
struct Pos { x: f32, y: f32, z: f32, _pad: f32 }
let codec = BytemuckCodec;
let bytes = codec.encode(&Pos { x: 1.0, y: 2.0, z: 3.0, _pad: 0.0 })?;
// ... persist to store, read back ...
let pos: &Pos = codec.decode(&env)?; // borrowed, no allocationTrait Implementations§
Source§impl Clone for BytemuckCodec
impl Clone for BytemuckCodec
Source§fn clone(&self) -> BytemuckCodec
fn clone(&self) -> BytemuckCodec
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for BytemuckCodec
Source§impl Debug for BytemuckCodec
impl Debug for BytemuckCodec
Source§impl<E> Decode<E> for BytemuckCodec
impl<E> Decode<E> for BytemuckCodec
Source§impl Default for BytemuckCodec
impl Default for BytemuckCodec
Source§fn default() -> BytemuckCodec
fn default() -> BytemuckCodec
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for BytemuckCodec
impl RefUnwindSafe for BytemuckCodec
impl Send for BytemuckCodec
impl Sync for BytemuckCodec
impl Unpin for BytemuckCodec
impl UnsafeUnpin for BytemuckCodec
impl UnwindSafe for BytemuckCodec
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.