Как реализовать родительский указатель дерева Iterator в Rust? - PullRequest
0 голосов
/ 16 апреля 2020

Итак, я пытаюсь реализовать родительское дерево указателей в 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?
        })
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...