Trait rkyv::ser::Serializer
source · pub trait Serializer: Fallible {
// Required methods
fn pos(&self) -> usize;
fn write(&mut self, bytes: &[u8]) -> Result<(), Self::Error>;
// Provided methods
fn pad(&mut self, padding: usize) -> Result<(), Self::Error> { ... }
fn align(&mut self, align: usize) -> Result<usize, Self::Error> { ... }
fn align_for<T>(&mut self) -> Result<usize, Self::Error> { ... }
unsafe fn resolve_aligned<T: Archive + ?Sized>(
&mut self,
value: &T,
resolver: T::Resolver,
) -> Result<usize, Self::Error> { ... }
fn serialize_value<T: Serialize<Self>>(
&mut self,
value: &T,
) -> Result<usize, Self::Error> { ... }
unsafe fn resolve_unsized_aligned<T: ArchiveUnsized + ?Sized>(
&mut self,
value: &T,
to: usize,
metadata_resolver: T::MetadataResolver,
) -> Result<usize, Self::Error> { ... }
fn serialize_unsized_value<T: SerializeUnsized<Self> + ?Sized>(
&mut self,
value: &T,
) -> Result<usize, Self::Error> { ... }
}
Expand description
A byte sink that knows where it is.
A type that is io::Write
can be wrapped in a
WriteSerializer
to equip it with Serializer
.
It’s important that the memory for archived objects is properly aligned before attempting to
read objects out of it; use an AlignedVec
or the
AlignedBytes
wrappers if they are appropriate.
Required Methods§
Provided Methods§
sourcefn 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.
sourcefn 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.
sourcefn 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.
sourceunsafe fn resolve_aligned<T: Archive + ?Sized>(
&mut self,
value: &T,
resolver: T::Resolver,
) -> Result<usize, Self::Error>
unsafe fn resolve_aligned<T: Archive + ?Sized>( &mut self, value: &T, resolver: T::Resolver, ) -> Result<usize, Self::Error>
Resolves the given value with its resolver and writes the archived type.
Returns the position of the written archived type.
§Safety
resolver
must be the result of serializingvalue
- The serializer must be aligned for a
T::Archived
sourcefn serialize_value<T: Serialize<Self>>(
&mut self,
value: &T,
) -> Result<usize, Self::Error>
fn serialize_value<T: Serialize<Self>>( &mut self, value: &T, ) -> Result<usize, Self::Error>
Archives the given object and returns the position it was archived at.
sourceunsafe fn resolve_unsized_aligned<T: ArchiveUnsized + ?Sized>(
&mut self,
value: &T,
to: usize,
metadata_resolver: T::MetadataResolver,
) -> Result<usize, Self::Error>
unsafe fn resolve_unsized_aligned<T: ArchiveUnsized + ?Sized>( &mut self, value: &T, to: usize, metadata_resolver: T::MetadataResolver, ) -> Result<usize, Self::Error>
Resolves the given reference with its resolver and writes the archived reference.
Returns the position of the written archived RelPtr
.
§Safety
metadata_resolver
must be the result of serializing the metadata ofvalue
to
must be the position of the serializedvalue
within the archive- The serializer must be aligned for a
RelPtr<T::Archived>
sourcefn serialize_unsized_value<T: SerializeUnsized<Self> + ?Sized>(
&mut self,
value: &T,
) -> Result<usize, Self::Error>
fn serialize_unsized_value<T: SerializeUnsized<Self> + ?Sized>( &mut self, value: &T, ) -> Result<usize, Self::Error>
Archives a reference to the given object and returns the position it was archived at.