我想在两个闭包之间分享一个引用;在一个闭合中可变。这是一种人为的情况,但我发现在学习Rust的过程中它很有趣。
为了使其有效,我必须使用{"type":"car"}
,{"type":"car"}
和Rc
。是否有更简单的方法来实现这一目标?
Weak
答案 0 :(得分:4)
这里不需要引用计数,因为实体的寿命比任何闭包都长。你可以逃脱:
fn something(f: &mut Foo) {
let f = RefCell::new(f);
let operation = || f.borrow().get();
let notify = || {
f.borrow_mut().incr();
};
retry(operation, notify);
println!("{:?}", f);
}
这很简单。
然而,使用RefCell
对于将别名XOR可变性的执行从编译时移动到运行时是必要的。