【发布时间】:2025-12-01 17:00:01
【问题描述】:
假设我有一个哈希映射 m: HashMap<K, V>、一个键 k: K 和一个值 v: V,并且想要执行以下操作:
- 如果
m在索引k处不包含值,则在索引k处插入v。 - 如果
m在索引k处包含值w,则将函数fn combine(x: V, y: V) -> Option<V>应用于v和w,并且:- 如果结果为
None,则从m中删除索引k处的条目。 - 如果结果为
Some(u),则将索引k处的值替换为u。
- 如果结果为
有没有办法“就地”执行此操作,而无需调用多次访问、修改或删除 k 处的值的函数?
我还想避免复制数据,因此理想情况下,不需要克隆 v 来将克隆分别提供给 insert 和 combine。
我可以重写combine 以使用(可变)引用(或内联它),但不复制数据的愿望仍然存在。
【问题讨论】: