我是 Rust 的新手,并且对这门语言有一点兴趣。我写了两个简单的函数来增加和减少里面的值Rc<RefCell<..>>
。由于此功能对任何数字类型都有意义,因此我尝试将它们转换为通用函数:
use num::Integer;
// This works fine
pub fn increment_counter(c: &Rc<RefCell<u32>>) {
let new_c = *c.borrow() + 1;
c.replace(new_c);
}
// This does not compile
pub fn decrement_counter<T>(c: &Rc<RefCell<T>>)
where
T: Integer,
{
let new_c = *c.borrow() - T::one();
c.replace(new_c);
}
我突然收到这个错误:
55 | let new_c = *c.borrow() - T::one();
| ^^^^^^^^^^^ cannot move out of borrowed content
我不明白为什么这种变化会导致这种错误。