Rust 如果存在一个条目,您是否可以将其插入到HashMap中,从而为您提供一个拥有的密钥副本?

Rust 如果存在一个条目,您是否可以将其插入到HashMap中,从而为您提供一个拥有的密钥副本?,rust,Rust,如果条目已经存在,则获取(K,V)并返回一个(拥有的)V。在这种情况下,现有条目中还应该有一个(拥有的)密钥。有办法得到它吗 i、 是否有一种方法可以实现类似于HashMap::insert_entry(&mut self,k:k,v:v)->Option(k,v)> 我发现您可以执行HashMap::remove_entry,然后执行HashMap::insert,但这需要两次查找。我认为这应该只需要一个。您可以使用以下功能: #![功能(地图输入替换)] fn insert_条目(m:&mu

如果条目已经存在,则获取
(K,V)
并返回一个(拥有的)
V
。在这种情况下,现有条目中还应该有一个(拥有的)密钥。有办法得到它吗

i、 是否有一种方法可以实现类似于
HashMap::insert_entry(&mut self,k:k,v:v)->Option(k,v)>

我发现您可以执行
HashMap::remove_entry
,然后执行
HashMap::insert
,但这需要两次查找。我认为这应该只需要一个。

您可以使用以下功能:

#![功能(地图输入替换)]
fn insert_条目(m:&mut HashMap,k:k,v:v)->选项{
匹配m.entry(k){
条目::已占用(o)=>{
部分(o.替换_条目(v))
}
条目::空缺(va)=>{
va.插入(v);
没有一个
}
}
}

您可以使用以下功能:

#![功能(地图输入替换)]
fn insert_条目(m:&mut HashMap,k:k,v:v)->选项{
匹配m.entry(k){
条目::已占用(o)=>{
部分(o.替换_条目(v))
}
条目::空缺(va)=>{
va.插入(v);
没有一个
}
}
}

谢谢@apatniv!您建议显式使用
hash_map::Entry
的变体,这一点非常正确。我已编辑您的解决方案以正确处理所有权。一旦有人批准,这些编辑应该是可见的。谢谢@apatniv!您建议显式使用
hash_map::Entry
的变体,这一点非常正确。我已编辑您的解决方案以正确处理所有权。一旦有人批准这些编辑,这些编辑应该是可见的。