Итак, я пытаюсь реализовать родительское дерево указателей в Rust. Это был бы узел дерева (с узлом root, явно имеющим None в качестве родителя).
pub struct Node {
pub parent: Option<Rc<Node>>,
pub id: i64,
pub random_string: String
}
Я попытался реализовать итератор, чтобы я мог перебирать всех предков. узла, но не смог заставить его работать. Кроме того, имеет ли смысл иметь итератор, возвращающий R c или & Node?
По запросу, моя (плохая) текущая попытка решить проблему:
pub struct ParentIterator<'a> {
parent: Option<&'a Node> // Can this only be an Rc<Node> instead of &Node?
}
impl<'a> Iterator for ParentIterator<'a> {
type Item = &'a Node; // Same question here?
fn next(&mut self) -> Option<&'a Node> {
self.parent.map(|node| {
// Found this online, does this make sense?
})
}
}