pub unsafe trait PackedValue:
'static
+ Copy
+ Send
+ Sync {
type Value: Packable;
const WIDTH: usize;
// Required methods
fn from_slice(slice: &[Self::Value]) -> &Self;
fn from_slice_mut(slice: &mut [Self::Value]) -> &mut Self;
fn from_fn<F>(f: F) -> Self
where F: FnMut(usize) -> Self::Value;
fn as_slice(&self) -> &[Self::Value];
fn as_slice_mut(&mut self) -> &mut [Self::Value];
// Provided methods
fn pack_slice(buf: &[Self::Value]) -> &[Self] { ... }
fn pack_slice_with_suffix(buf: &[Self::Value]) -> (&[Self], &[Self::Value]) { ... }
fn pack_slice_mut(buf: &mut [Self::Value]) -> &mut [Self] { ... }
fn pack_maybe_uninit_slice_mut(
buf: &mut [MaybeUninit<Self::Value>],
) -> &mut [MaybeUninit<Self>] { ... }
fn pack_slice_with_suffix_mut(
buf: &mut [Self::Value],
) -> (&mut [Self], &mut [Self::Value]) { ... }
fn pack_maybe_uninit_slice_with_suffix_mut(
buf: &mut [MaybeUninit<Self::Value>],
) -> (&mut [MaybeUninit<Self>], &mut [MaybeUninit<Self::Value>]) { ... }
fn unpack_slice(buf: &[Self]) -> &[Self::Value] { ... }
}
Expand description
§Safety
- If
P
implementsPackedField
thenP
must be castable to/from[P::Value; P::WIDTH]
without UB.
Required Associated Constants§
Required Associated Types§
Required Methods§
fn from_slice(slice: &[Self::Value]) -> &Self
fn from_slice_mut(slice: &mut [Self::Value]) -> &mut Self
fn as_slice(&self) -> &[Self::Value]
fn as_slice_mut(&mut self) -> &mut [Self::Value]
Provided Methods§
fn pack_slice(buf: &[Self::Value]) -> &[Self]
fn pack_slice_with_suffix(buf: &[Self::Value]) -> (&[Self], &[Self::Value])
fn pack_slice_mut(buf: &mut [Self::Value]) -> &mut [Self]
fn pack_maybe_uninit_slice_mut( buf: &mut [MaybeUninit<Self::Value>], ) -> &mut [MaybeUninit<Self>]
fn pack_slice_with_suffix_mut( buf: &mut [Self::Value], ) -> (&mut [Self], &mut [Self::Value])
fn pack_maybe_uninit_slice_with_suffix_mut( buf: &mut [MaybeUninit<Self::Value>], ) -> (&mut [MaybeUninit<Self>], &mut [MaybeUninit<Self::Value>])
fn unpack_slice(buf: &[Self]) -> &[Self::Value]
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.