如果值超过闭包,那么在闭包之间共享引用的正确方法是什么?

时间:2017-01-06 12:46:02

标签: rust

我想在两个闭包之间分享一个引用;在一个闭合中可变。这是一种人为的情况,但我发现在学习Rust的过程中它很有趣。

为了使其有效,我必须使用{"type":"car"} {"type":"car"} Rc。是否有更简单的方法来实现这一目标?

Weak

1 个答案:

答案 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可变性的执行从编译时移动到运行时是必要的。