【发布时间】:2015-11-03 09:49:15
【问题描述】:
我正在使用HashMap 来存储枚举。我想从HashMap 中获取一个值,如果该值是特定的枚举变量,我想将该值的修改后的副本插入到HashMap 中。
我想出的代码是这样的:
if let Node::LeafNode(mut leaf_node) = *(self.pages.get(&page).unwrap()) {
let mut leaf_node = leaf_node.clone();
// ...
self.pages.insert(leaf_page,Node::LeafNode(leaf_node));
}
这不会编译,因为self.pages 的借用一直持续到if let-block 的末尾,而self.pages.insert 是可变借用。
我尝试使用值的副本来隐藏HashMap 的值,但这并没有结束借用。通常我会使用{} 块来限制借用,但这在match 或if let 中似乎是不可能的。
结束借用以便获得新的可变借用的惯用方式是什么?
【问题讨论】:
标签: rust