Я пытаюсь определить рекурсивную структуру данных в Rust, но в моем понимании Rust и памяти есть некоторые недостатки - единственное, что мне удается сделать, это выбрать бой с помощью средства проверки заимствований.Как вернуть ссылку на часть рекурсивной структуры данных?
У меня есть следующий заглушка квадратного дерева и хочу проецировать один из квадрантов следующим образом.
use CC::{Node, Leaf};
enum CC {
Node(i32, bool, i32, Rc<CC>, Rc<CC>, Rc<CC>, Rc<CC>),
Leaf(bool),
}
impl CC {
fn nw(&self) -> CC {
match *self {
Node(_, _, _, ref nw, _, _, _) => *nw.clone(),
_ => panic!()
}
}
}
Но все, что я в конечном итоге является
src/hashlife.rs:34:47: 34:58 error: cannot move out of borrowed content
src/hashlife.rs:34 Node(_, _, _, ref nw, _, _, _) => *nw.clone(),
^~~~~~~~~~~
Вы хотите вернуть 'CC', отличный от того, который находится в вашем дереве, или ссылку на тот же самый? Ваш тип возврата 'nw' указывает, что он будет первым. – Shepmaster
Я хочу вернуть ссылку на тот же узел, что и в дереве. – capitrane