Trait rkyv::DeserializeUnsized

source ·
pub trait DeserializeUnsized<T: Pointee + ?Sized, D: Fallible + ?Sized>: ArchivePointee {
    // Required methods
    unsafe fn deserialize_unsized(
        &self,
        deserializer: &mut D,
        out: *mut T,
    ) -> Result<(), D::Error>;
    fn deserialize_metadata(&self) -> T::Metadata;
}
Expand description

A counterpart of Deserialize that’s suitable for unsized types.

Required Methods§

source

unsafe fn deserialize_unsized( &self, deserializer: &mut D, out: *mut T, ) -> Result<(), D::Error>

Deserializes a reference to the given value.

§Safety

out must be non-null, properly-aligned, and valid for writes. It must be allocated according to the layout of the deserialized metadata.

source

fn deserialize_metadata(&self) -> T::Metadata

Deserializes the metadata for the given type.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<D: Fallible + ?Sized> DeserializeUnsized<str, D> for str

source§

impl<D: Fallible + ?Sized> DeserializeUnsized<CStr, D> for CStr

source§

impl<T, U, D> DeserializeUnsized<[U], D> for [T]
where T: Deserialize<U, D>, D: Fallible + ?Sized,

source§

unsafe fn deserialize_unsized( &self, deserializer: &mut D, out: *mut [U], ) -> Result<(), D::Error>

source§

fn deserialize_metadata(&self) -> <[U] as Pointee>::Metadata

Implementors§

source§

impl<T, D> DeserializeUnsized<T, D> for T::Archived
where T: Archive, D: Fallible + ?Sized, T::Archived: Deserialize<T, D>,