Я хочу реализовать дерево, узел которого имеет поле parent
, используя Rust. Из официального руководства add-a-reference-from-a-child-to-its-parent, они используют структуру
struct Node {
value: i32,
parent: RefCell<Weak<Node>>,
children: RefCell<Vec<Rc<Node>>>,
}
Чтобы использовать экземпляр RefCell<Rc<T>>
изменчиво, я могу вызвать .borrow_mut()
.
Если я хочу дерево с родителями, которые могут быть видоизменены, какое из них я рекомендую?
RefCell<Rc>
имеет более строгий контроль заимствования: вы можете получить только одну изменяемую ссылку на данные.Rc<RefCell>
, позволяет иметь много изменяемых ссылок одновременно. Так что для твоего случая лучшеRefCell<Rc>
. - person Zefick   schedule 14.08.2019RefCell
. - person Zefick   schedule 14.08.2019