fixed-map
fixed-map copied to clipboard
Proposal: Change iterator implementations to return borrowed keys
Or: "Do the iterators really need to copy the keys by default?"
I'm having a bit of trouble creating an implementation for bevy_reflect::Map
on a wrapper type around your fixed_map::Map
type. The problem stems from the requirement that bevy_reflect::Map::get_at
and bevy_reflect::Map::get_at_mut
return the key-value pairs as borrowed dyn Reflect
trait objects. While this is easy for the values (since they are borrowed anyway), there comes a problem with the keys. Because the keys are given from your iter()
and iter_mut()
iterators as owned values, this makes it impossible to meet the requirement for the trait.
Due to how trivial it is to acquire an owned key if necessary for a user's use-case (since the keys must implement Copy
, simply doing *key
in the iterator adaptor is good enough), I propose that the iterator implementations instead return borrows of the keys and leave it to the user to copy them if necessary.