diff --git a/Cargo.toml b/Cargo.toml index f05dcea..705132f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trait-bound-typemap" -version = "0.3.2" +version = "0.3.3" edition = "2021" license = "Apache-2.0" readme = "README.md" diff --git a/src/tests.rs b/src/tests.rs index d941583..6d0b453 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,5 +1,6 @@ use crate::{ - AnyTypeMap, CloneSendSyncTypeMap, CloneTypeMap, PartialEqTypeMap, TypeMap, TypeMapKey, + AnyTypeMap, CloneSendSyncTypeMap, CloneTypeMap, PartialEqTypeMap, SendSyncTypeMap, TypeMap, + TypeMapKey, }; pub struct TestStructKey; @@ -98,6 +99,9 @@ fn it_converts() { clone_send_sync_map.insert::(TestStruct::default()); assert!(clone_send_sync_map.contains_key::()); + let send_sync_map = SendSyncTypeMap::from_iter(clone_send_sync_map.clone()); + assert!(send_sync_map.contains_key::()); + let clone_map = CloneTypeMap::from_iter(clone_send_sync_map); assert!(clone_map.contains_key::()); diff --git a/src/trait_maps/mod.rs b/src/trait_maps/mod.rs index 77dc0cd..9820e57 100644 --- a/src/trait_maps/mod.rs +++ b/src/trait_maps/mod.rs @@ -1,9 +1,11 @@ mod clone_send_sync_typemap; mod clone_typemap; mod partialeq_typemap; +mod send_sync_typemap; mod typemap; pub use clone_send_sync_typemap::*; pub use clone_typemap::*; pub use partialeq_typemap::*; +pub use send_sync_typemap::*; pub use typemap::*; diff --git a/src/trait_maps/send_sync_typemap.rs b/src/trait_maps/send_sync_typemap.rs new file mode 100644 index 0000000..a8282ab --- /dev/null +++ b/src/trait_maps/send_sync_typemap.rs @@ -0,0 +1,14 @@ +use crate::impl_typemap; +use std::any::Any; + +impl_typemap!( + /// A typemap that is Send and Sync + SendSyncTypeMap, + SendSyncTypeMapKey, + Any, + Send, + Sync +); + +unsafe impl Send for SendSyncTypeMap {} +unsafe impl Sync for SendSyncTypeMap {}