【发布时间】:2017-05-23 18:08:48
【问题描述】:
use std::collections::HashMap;
use std::collections::hash_map::Entry::*;
struct A {
map: HashMap<String, String>,
i: i32
}
impl A {
fn test(&mut self) {
match self.map.get("abc") {
None => {},
Some(x) => self.trigger(&x)
}
}
fn trigger(&mut self, x: &str) {
self.i += 1;
}
}
代码不起作用,因为self.trigger 可变地借用了self,而self.map.get 在范围内保留了self 的不可变借用。
鉴于我可以确保在trigger 中我不会修改self.map,有什么方法可以让它工作吗?
我不能让trigger 借用self 不变,就像Can I borrow self immutably for self.callbacks: Vec<Box<FnMut>>? 一样
我正在使用 rustc 1.19.0-nightly。
【问题讨论】:
标签: rust