It is clear that there is a need for the ability to move out of smart pointers and indexable things (DerefMove, IndexMove). The other frequently desired option is to IndexSet, which would be a special-cased version for indexing in this situation:
currently, this is handled via IndexMut, but that is sub-optimal, because if the key is not already part of the map, the result is a panic.
Basic plan
DerefMove/IndexMove/IndexSet should layer on top of the traits we have now. One needs to be careful here because of subtle interactions with autoref and so forth.
Postponed RFCs
It is clear that there is a need for the ability to move out of smart pointers and indexable things (
DerefMove,IndexMove). The other frequently desired option is toIndexSet, which would be a special-cased version for indexing in this situation:currently, this is handled via
IndexMut, but that is sub-optimal, because if thekeyis not already part of themap, the result is a panic.Basic plan
DerefMove/IndexMove/IndexSet should layer on top of the traits we have now. One needs to be careful here because of subtle interactions with autoref and so forth.
Postponed RFCs
a[b] = cexpression #1129 (map[key] = value)