Как выразить взаимно рекурсивные структуры данных в безопасном 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
потенциально может мутировать все дерево