An anymap::AnyMap can hold any value. Is there a way to constraint this to say
anymap::AnyMap where we only hold values T where T: SomeTrait ?
An anymap::AnyMap can hold any value. Is there a way to constraint this to say
anymap::AnyMap where we only hold values T where T: SomeTrait ?
I think you may want to use typedmap for that. anymap doesn't have such functionality (unless the bound you want is any combination of Send
, Sync
and Clone
). See typedmap::bounds - Rust for documentation about custom bounds.
You can make Any
a supertrait bound of your trait, implement manual supertrait upcasting, and make your own HashMap<TypeId, Box<dyn YourTrait>>
.
If you don't want the supertrait bound, you can still manually implement downcasting for 'static
types via TypeId
ala dyn Error
.