pub trait DynSerializer {
// Required methods
fn pos_dyn(&self) -> usize;
fn write_dyn(&mut self, bytes: &[u8]) -> Result<(), DynError>;
unsafe fn push_scratch_dyn(
&mut self,
layout: Layout,
) -> Result<NonNull<[u8]>, DynError>;
unsafe fn pop_scratch_dyn(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
) -> Result<(), DynError>;
}Expand description
An object-safe version of Serializer.
Instead of an associated error type, DynSerializer returns the DynError type. If you have
a serializer that already implements Serializer, then it will automatically implement
DynSerializer.
Required Methods§
Sourcefn write_dyn(&mut self, bytes: &[u8]) -> Result<(), DynError>
fn write_dyn(&mut self, bytes: &[u8]) -> Result<(), DynError>
Attempts to write the given bytes to the serializer.
Sourceunsafe fn pop_scratch_dyn(
&mut self,
ptr: NonNull<u8>,
layout: Layout,
) -> Result<(), DynError>
unsafe fn pop_scratch_dyn( &mut self, ptr: NonNull<u8>, layout: Layout, ) -> Result<(), DynError>
Deallocates previously allocated scratch space.
§Safety
ptrmust be the scratch memory last allocated withpush_scratch.layoutmust be the same layout that was used to allocate that block of memory.
Trait Implementations§
Source§impl<'a> Fallible for dyn DynSerializer + 'a
impl<'a> Fallible for dyn DynSerializer + 'a
Source§impl<'a> ScratchSpace for dyn DynSerializer + 'a
impl<'a> ScratchSpace for dyn DynSerializer + 'a
Source§impl<'a> Serializer for dyn DynSerializer + 'a
impl<'a> Serializer for dyn DynSerializer + 'a
Source§fn write(&mut self, bytes: &[u8]) -> Result<(), Self::Error>
fn write(&mut self, bytes: &[u8]) -> Result<(), Self::Error>
Attempts to write the given bytes to the serializer.
Source§fn pad(&mut self, padding: usize) -> Result<(), Self::Error>
fn pad(&mut self, padding: usize) -> Result<(), Self::Error>
Advances the given number of bytes as padding.
Source§fn align(&mut self, align: usize) -> Result<usize, Self::Error>
fn align(&mut self, align: usize) -> Result<usize, Self::Error>
Aligns the position of the serializer to the given alignment.
Source§fn align_for<T>(&mut self) -> Result<usize, Self::Error>
fn align_for<T>(&mut self) -> Result<usize, Self::Error>
Aligns the position of the serializer to be suitable to write the given type.
Source§unsafe fn resolve_aligned<T>(
&mut self,
value: &T,
resolver: <T as Archive>::Resolver,
) -> Result<usize, Self::Error>
unsafe fn resolve_aligned<T>( &mut self, value: &T, resolver: <T as Archive>::Resolver, ) -> Result<usize, Self::Error>
Resolves the given value with its resolver and writes the archived type. Read more
Source§fn serialize_value<T>(&mut self, value: &T) -> Result<usize, Self::Error>where
T: Serialize<Self>,
fn serialize_value<T>(&mut self, value: &T) -> Result<usize, Self::Error>where
T: Serialize<Self>,
Archives the given object and returns the position it was archived at.
Source§unsafe fn resolve_unsized_aligned<T>(
&mut self,
value: &T,
to: usize,
metadata_resolver: <T as ArchiveUnsized>::MetadataResolver,
) -> Result<usize, Self::Error>where
T: ArchiveUnsized + ?Sized,
unsafe fn resolve_unsized_aligned<T>(
&mut self,
value: &T,
to: usize,
metadata_resolver: <T as ArchiveUnsized>::MetadataResolver,
) -> Result<usize, Self::Error>where
T: ArchiveUnsized + ?Sized,
Resolves the given reference with its resolver and writes the archived reference. Read more
Source§fn serialize_unsized_value<T>(
&mut self,
value: &T,
) -> Result<usize, Self::Error>where
T: SerializeUnsized<Self> + ?Sized,
fn serialize_unsized_value<T>(
&mut self,
value: &T,
) -> Result<usize, Self::Error>where
T: SerializeUnsized<Self> + ?Sized,
Archives a reference to the given object and returns the position it was archived at.