Я новичок в 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
Я не понимаю, почему этоизменение приводит к ошибке такого рода.