代码:
use std::collections::HashMap;
fn do_something<'a>(map: &'a mut HashMap<u32, Box<u32>>, key: &u32) -> &'a mut u32 {
if let Some(b) = map.get_mut(key) { return b.as_mut(); }
let mut b = Box::new(123);
map.insert(*key, b);
b.as_mut()
}
我有两个主要的编译器错误(第三个错误不是这样):
- borrow
map
美元的错误 - 不执行
Copy
trait的错误
我从我的算法中提取了这段平静的代码,方法都是一样的.用GC用其他语言"翻译"的代码可以很好地编译和运行,但我在这里遇到了错误.我理解为什么会出现这些错误,但我需要我的代码以这种方式工作:在迭代期间,我将 node 存储在映射中,并在下一次迭代中将其用作当前值.我真的很想知道如何让这段代码在没有其他东西的情况下工作,比如Rc
.