我有一个名为 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); }