[go: up one dir, main page]

rkyv

Trait 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.

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.

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>,