【发布时间】:2021-07-16 05:24:08
【问题描述】:
将bool 封装在Rc<RefCell<>> 中的正确方法是什么?
use std::{cell::RefCell, rc::Rc};
fn main(){
let my_wrapped_bool = Rc::from(RefCell::from(true));
*my_wrapped_bool.borrow_mut() ^= *my_wrapped_bool.borrow();
}
显然我们不能同时借用 mut 和借用,但似乎我们需要某种对内部值的引用才能反转。
thread 'main' panicked at 'already borrowed: BorrowMutError', src/main.rs:5:22
【问题讨论】:
-
RefCell<bool>有点“矫枉过正”...Cell<bool>就足够了。let my_wrapped_bool = Rc::from(Cell::from(true)); my_wrapped_bool.set(!my_wrapped_bool.get());此外,布尔值与自身进行异或不会反转它;它总是将其设置为false。
标签: rust