在Rust中修改HashMap(这里发生了可变借用)

时间:2018-02-04 18:31:28

标签: rust

我有一个名为 address_mapping 的变量,它是公共结构的一部分。我已将所有代码放在同一个函数中,并且我遇到了引用的一些问题。

match self.address_mapping.get(&tx_outpoint) {
    Some(address_info) => {                          
        balances.push(address_info.clone().current_balance as f64);
        address_info_vec.push(address_info);
        tx_outpoint_vec.push(tx_outpoint);
    }
};
...
self.address_mapping.remove(&tx_outpoint);
  

匹配self.address_mapping.get(& tx_outpoint){       | --------------------不可变借入发生在这里

     

self.address_mapping.remove(安培; tx_outpoint);       | ^^^^^^^^^^^^^^^^^^^^可变借用发生在这里

它在代码的另一部分再次出现,即使我使用{}来设置范围。我也尝试在_borrow上使用drop方法。此外,我认为使用克隆方法是一个坏主意,因为这种数据结构可能会变得非常大。

{
     let _borrow = &mut self.address_mapping;
     for (tx_outpoint, address_info) in _borrow {
         txoutpoint_to_delete.push(tx_outpoint);
     }
}
...
for tx_outpoint in &txoutpoint_to_delete { self.address_mapping.remove(tx_outpoint); }

0 个答案:

没有答案