Как выразить взаимно рекурсивные структуры данных в безопасном Rust?

Я пытаюсь реализовать сценографическую структуру данных в Rust. Я хотел бы эквивалент этого кода C ++, выраженного вбезопасный Ржавчина:

struct Node
{
    Node* parent; // should be mutable, and nullable (no parent)
    std::vector<Node*> child;

    virtual ~Node() 
    { 
        for(auto it = child.begin(); it != child.end(); ++it)
        {
            delete *it;
        }
    }

    void addNode(Node* newNode)
    {
        if (newNode->parent)
        {
            newNode->parent.child.erase(newNode->parent.child.find(newNode));
        }
        newNode->parent = this;
        child.push_back(newNode);
    }
}

Свойства, которые я хочу:

родитель берет на себя ответственность за своих детейузлы доступны извне по некоторой ссылкесобытия, которые касаются одногоNode потенциально может мутировать все дерево

Ответы на вопрос(3)

Ваш ответ на вопрос