出于某些原因,我需要在<Rc<RefCell<T>>
后面加上闭包:
但是,闭包作为特征对象存储时变得不可用。
这里是一个例子。简单来说,变量closure
不会改变环境。在我自己的用例中,我确实需要一个可变环境。
type Handler = FnMut(&mut u32);
let closure: rc::Rc<cell::RefCell<Handler>> = rc::Rc::new(cell::RefCell::new(|x: &mut u32|{
// would work if above line is:
// let closure: = rc::Rc::new(cell::RefCell::new(|x: &mut u32|{
*x = 3;
}));
let mut y = 0u32;
let cc = closure.borrow_mut();
cc(&mut y);
我知道,如果删除变量closure
上的类型约束,它会起作用。但是那样一来,我就失去了将类似的闭包放入vec的能力。
有没有办法在<Rc<RefCell<T>>
后面使用闭包?还是有其他替代品可以满足我列出的3个要求?