trait_bound_typemap/trait_maps/
clone_send_sync_typemap.rs1use crate::impl_typemap;
2use multi_trait_object::{MultitraitObject, RawClone, TryClone};
3use std::any::TypeId;
4use std::collections::HashMap;
5
6impl_typemap!(
7 CloneSendSyncTypeMap,
9 CloneSendSyncTypeMapKey,
10 RawClone,
11 Send,
12 Sync
13);
14
15impl Clone for CloneSendSyncTypeMap {
16 fn clone(&self) -> Self {
17 let map = self
18 .0
19 .0
20 .iter()
21 .map(|(tid, mto)| (tid.clone(), mto.try_clone().unwrap()))
22 .collect::<HashMap<TypeId, MultitraitObject>>();
23
24 Self(crate::type_indexed::TypeIndexedMap(map))
25 }
26}
27
28unsafe impl Send for CloneSendSyncTypeMap {}
29unsafe impl Sync for CloneSendSyncTypeMap {}