pub struct MapKV<K, V> { /* private fields */ }Expand description
A wrapper that applies key and value wrappers to the key-value pairs contained in a type. This can be applied to a hash map or B-tree map to map the key-value pairs.
§Example
use std::collections::HashMap;
use rkyv::{
with::{Inline, InlineAsBox, MapKV},
Archive,
};
#[derive(Archive)]
struct Example<'a> {
// This will apply `InlineAsBox` to the `&str` key, and `Inline` to the
// `&str` value.
#[rkyv(with = MapKV<InlineAsBox, Inline>)]
hash_map: HashMap<&'a str, &'a str>,
}Trait Implementations§
Source§impl<A, B, K, V> ArchiveWith<BTreeMap<K, V>> for MapKV<A, B>where
A: ArchiveWith<K>,
B: ArchiveWith<V>,
impl<A, B, K, V> ArchiveWith<BTreeMap<K, V>> for MapKV<A, B>where
A: ArchiveWith<K>,
B: ArchiveWith<V>,
Source§type Archived = ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>
type Archived = ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>
The archived type of
Self with F.Source§type Resolver = BTreeMapResolver
type Resolver = BTreeMapResolver
The resolver of a
Self with F.Source§impl<A, B, K, V, H> ArchiveWith<HashMap<K, V, H>> for MapKV<A, B>
impl<A, B, K, V, H> ArchiveWith<HashMap<K, V, H>> for MapKV<A, B>
Source§type Archived = ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>
type Archived = ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>
The archived type of
Self with F.Source§type Resolver = HashMapResolver
type Resolver = HashMapResolver
The resolver of a
Self with F.Source§impl<A, B, K, V, D> DeserializeWith<ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, BTreeMap<K, V>, D> for MapKV<A, B>where
A: ArchiveWith<K> + DeserializeWith<<A as ArchiveWith<K>>::Archived, K, D>,
B: ArchiveWith<V> + DeserializeWith<<B as ArchiveWith<V>>::Archived, V, D>,
K: Ord,
D: Fallible + ?Sized,
impl<A, B, K, V, D> DeserializeWith<ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, BTreeMap<K, V>, D> for MapKV<A, B>where
A: ArchiveWith<K> + DeserializeWith<<A as ArchiveWith<K>>::Archived, K, D>,
B: ArchiveWith<V> + DeserializeWith<<B as ArchiveWith<V>>::Archived, V, D>,
K: Ord,
D: Fallible + ?Sized,
Source§fn deserialize_with(
field: &ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>,
deserializer: &mut D,
) -> Result<BTreeMap<K, V>, <D as Fallible>::Error>
fn deserialize_with( field: &ArchivedBTreeMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, deserializer: &mut D, ) -> Result<BTreeMap<K, V>, <D as Fallible>::Error>
Deserializes the field type
F using the given deserializer.Source§impl<A, B, K, V, D, S> DeserializeWith<ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, HashMap<K, V, S>, D> for MapKV<A, B>where
A: ArchiveWith<K> + DeserializeWith<<A as ArchiveWith<K>>::Archived, K, D>,
B: ArchiveWith<V> + DeserializeWith<<B as ArchiveWith<V>>::Archived, V, D>,
K: Hash + Eq,
D: Fallible + ?Sized,
S: Default + BuildHasher,
impl<A, B, K, V, D, S> DeserializeWith<ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, HashMap<K, V, S>, D> for MapKV<A, B>where
A: ArchiveWith<K> + DeserializeWith<<A as ArchiveWith<K>>::Archived, K, D>,
B: ArchiveWith<V> + DeserializeWith<<B as ArchiveWith<V>>::Archived, V, D>,
K: Hash + Eq,
D: Fallible + ?Sized,
S: Default + BuildHasher,
Source§fn deserialize_with(
field: &ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>,
deserializer: &mut D,
) -> Result<HashMap<K, V, S>, <D as Fallible>::Error>
fn deserialize_with( field: &ArchivedHashMap<<A as ArchiveWith<K>>::Archived, <B as ArchiveWith<V>>::Archived>, deserializer: &mut D, ) -> Result<HashMap<K, V, S>, <D as Fallible>::Error>
Deserializes the field type
F using the given deserializer.Source§impl<A, B, K, V, S> SerializeWith<BTreeMap<K, V>, S> for MapKV<A, B>where
A: ArchiveWith<K> + SerializeWith<K, S>,
B: ArchiveWith<V> + SerializeWith<V, S>,
<A as ArchiveWith<K>>::Archived: Ord,
S: Fallible + Allocator + Writer + ?Sized,
S::Error: Source,
impl<A, B, K, V, S> SerializeWith<BTreeMap<K, V>, S> for MapKV<A, B>where
A: ArchiveWith<K> + SerializeWith<K, S>,
B: ArchiveWith<V> + SerializeWith<V, S>,
<A as ArchiveWith<K>>::Archived: Ord,
S: Fallible + Allocator + Writer + ?Sized,
S::Error: Source,
Source§impl<A, B, K, V, S, H> SerializeWith<HashMap<K, V, H>, S> for MapKV<A, B>where
A: ArchiveWith<K> + SerializeWith<K, S>,
B: ArchiveWith<V> + SerializeWith<V, S>,
K: Hash + Eq,
<A as ArchiveWith<K>>::Archived: Eq + Hash,
S: Fallible + Allocator + Writer + ?Sized,
S::Error: Source,
H: Default + BuildHasher,
H::Hasher: Default,
impl<A, B, K, V, S, H> SerializeWith<HashMap<K, V, H>, S> for MapKV<A, B>where
A: ArchiveWith<K> + SerializeWith<K, S>,
B: ArchiveWith<V> + SerializeWith<V, S>,
K: Hash + Eq,
<A as ArchiveWith<K>>::Archived: Eq + Hash,
S: Fallible + Allocator + Writer + ?Sized,
S::Error: Source,
H: Default + BuildHasher,
H::Hasher: Default,
Auto Trait Implementations§
impl<K, V> Freeze for MapKV<K, V>
impl<K, V> RefUnwindSafe for MapKV<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for MapKV<K, V>
impl<K, V> Sync for MapKV<K, V>
impl<K, V> Unpin for MapKV<K, V>
impl<K, V> UnsafeUnpin for MapKV<K, V>
impl<K, V> UnwindSafe for MapKV<K, V>where
K: UnwindSafe,
V: UnwindSafe,
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.