pub struct AsVec;Expand description
A wrapper that serializes associative containers as a Vec of key-value
pairs.
This provides faster serialization for containers like HashMap and
BTreeMap by serializing the key-value pairs directly instead of building a
data structure in the buffer.
It also allows &[T] to be archived like an owned Vec. However, note
that &[T] cannot be deserialized this way.
§Example
use std::collections::HashMap;
use rkyv::{with::AsVec, Archive};
#[derive(Archive)]
struct Example<'a> {
#[rkyv(with = AsVec)]
values: HashMap<String, u32>,
#[rkyv(with = AsVec)]
slice: &'a [u32],
}Trait Implementations§
Source§impl<T: Archive> ArchiveWith<&[T]> for AsVec
impl<T: Archive> ArchiveWith<&[T]> for AsVec
Source§type Resolver = VecResolver
type Resolver = VecResolver
The resolver of a
Self with F.Source§impl<const A: usize> ArchiveWith<AlignedVec<A>> for AsVec
impl<const A: usize> ArchiveWith<AlignedVec<A>> for AsVec
Source§type Archived = ArchivedVec<u8>
type Archived = ArchivedVec<u8>
The archived type of
Self with F.Source§type Resolver = VecResolver
type Resolver = VecResolver
The resolver of a
Self with F.Source§fn resolve_with(
field: &AlignedVec<A>,
resolver: Self::Resolver,
out: Place<Self::Archived>,
)
fn resolve_with( field: &AlignedVec<A>, resolver: Self::Resolver, out: Place<Self::Archived>, )
Resolves the archived type using a reference to the field type
F.Source§impl<K: Archive, V: Archive> ArchiveWith<BTreeMap<K, V>> for AsVec
impl<K: Archive, V: Archive> ArchiveWith<BTreeMap<K, V>> for AsVec
Source§impl<T: Archive> ArchiveWith<BTreeSet<T>> for AsVec
impl<T: Archive> ArchiveWith<BTreeSet<T>> for AsVec
Source§type Resolver = VecResolver
type Resolver = VecResolver
The resolver of a
Self with F.Source§impl<K: Archive, V: Archive, H> ArchiveWith<HashMap<K, V, H>> for AsVec
impl<K: Archive, V: Archive, H> ArchiveWith<HashMap<K, V, H>> for AsVec
Source§impl<T: Archive, H> ArchiveWith<HashSet<T, H>> for AsVec
impl<T: Archive, H> ArchiveWith<HashSet<T, H>> for AsVec
Source§type Resolver = VecResolver
type Resolver = VecResolver
The resolver of a
Self with F.Source§impl<T, D> DeserializeWith<ArchivedVec<<T as Archive>::Archived>, BTreeSet<T>, D> for AsVec
impl<T, D> DeserializeWith<ArchivedVec<<T as Archive>::Archived>, BTreeSet<T>, D> for AsVec
Source§fn deserialize_with(
field: &ArchivedVec<T::Archived>,
deserializer: &mut D,
) -> Result<BTreeSet<T>, D::Error>
fn deserialize_with( field: &ArchivedVec<T::Archived>, deserializer: &mut D, ) -> Result<BTreeSet<T>, D::Error>
Deserializes the field type
F using the given deserializer.Source§impl<T, H, D> DeserializeWith<ArchivedVec<<T as Archive>::Archived>, HashSet<T, H>, D> for AsVecwhere
T: Archive + Hash + Eq,
T::Archived: Deserialize<T, D>,
H: BuildHasher + Default,
D: Fallible + ?Sized,
impl<T, H, D> DeserializeWith<ArchivedVec<<T as Archive>::Archived>, HashSet<T, H>, D> for AsVecwhere
T: Archive + Hash + Eq,
T::Archived: Deserialize<T, D>,
H: BuildHasher + Default,
D: Fallible + ?Sized,
Source§fn deserialize_with(
field: &ArchivedVec<T::Archived>,
deserializer: &mut D,
) -> Result<HashSet<T, H>, D::Error>
fn deserialize_with( field: &ArchivedVec<T::Archived>, deserializer: &mut D, ) -> Result<HashSet<T, H>, D::Error>
Deserializes the field type
F using the given deserializer.Source§impl<K, V, D> DeserializeWith<ArchivedVec<Entry<<K as Archive>::Archived, <V as Archive>::Archived>>, BTreeMap<K, V>, D> for AsVecwhere
K: Archive + Ord,
V: Archive,
K::Archived: Deserialize<K, D>,
V::Archived: Deserialize<V, D>,
D: Fallible + ?Sized,
impl<K, V, D> DeserializeWith<ArchivedVec<Entry<<K as Archive>::Archived, <V as Archive>::Archived>>, BTreeMap<K, V>, D> for AsVecwhere
K: Archive + Ord,
V: Archive,
K::Archived: Deserialize<K, D>,
V::Archived: Deserialize<V, D>,
D: Fallible + ?Sized,
Source§impl<K, V, H, D> DeserializeWith<ArchivedVec<Entry<<K as Archive>::Archived, <V as Archive>::Archived>>, HashMap<K, V, H>, D> for AsVecwhere
K: Archive + Hash + Eq,
V: Archive,
K::Archived: Deserialize<K, D>,
V::Archived: Deserialize<V, D>,
H: BuildHasher + Default,
D: Fallible + ?Sized,
impl<K, V, H, D> DeserializeWith<ArchivedVec<Entry<<K as Archive>::Archived, <V as Archive>::Archived>>, HashMap<K, V, H>, D> for AsVecwhere
K: Archive + Hash + Eq,
V: Archive,
K::Archived: Deserialize<K, D>,
V::Archived: Deserialize<V, D>,
H: BuildHasher + Default,
D: Fallible + ?Sized,
Source§impl<D, const A: usize> DeserializeWith<ArchivedVec<u8>, AlignedVec<A>, D> for AsVec
impl<D, const A: usize> DeserializeWith<ArchivedVec<u8>, AlignedVec<A>, D> for AsVec
Source§fn deserialize_with(
field: &ArchivedVec<u8>,
_: &mut D,
) -> Result<AlignedVec<A>, D::Error>
fn deserialize_with( field: &ArchivedVec<u8>, _: &mut D, ) -> Result<AlignedVec<A>, D::Error>
Deserializes the field type
F using the given deserializer.Source§impl<T, S> SerializeWith<&[T], S> for AsVec
impl<T, S> SerializeWith<&[T], S> for AsVec
Source§impl<S, const A: usize> SerializeWith<AlignedVec<A>, S> for AsVec
impl<S, const A: usize> SerializeWith<AlignedVec<A>, S> for AsVec
Source§fn serialize_with(
field: &AlignedVec<A>,
serializer: &mut S,
) -> Result<Self::Resolver, S::Error>
fn serialize_with( field: &AlignedVec<A>, serializer: &mut S, ) -> Result<Self::Resolver, S::Error>
Serializes the field type
F using the given serializer.Source§impl<K, V, S> SerializeWith<BTreeMap<K, V>, S> for AsVec
impl<K, V, S> SerializeWith<BTreeMap<K, V>, S> for AsVec
Source§impl<T, S> SerializeWith<BTreeSet<T>, S> for AsVec
impl<T, S> SerializeWith<BTreeSet<T>, S> for AsVec
Source§impl<K, V, H, S> SerializeWith<HashMap<K, V, H>, S> for AsVec
impl<K, V, H, S> SerializeWith<HashMap<K, V, H>, S> for AsVec
Auto Trait Implementations§
impl Freeze for AsVec
impl RefUnwindSafe for AsVec
impl Send for AsVec
impl Sync for AsVec
impl Unpin for AsVec
impl UnsafeUnpin for AsVec
impl UnwindSafe for AsVec
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.