Wie drücke ich gegenseitig rekursive Datenstrukturen in safe Rust aus?

Ich versuche, eine szenengraphartige Datenstruktur in Rust zu implementieren. Ich möchte ein Äquivalent zu diesem C ++ - Code, ausgedrückt insiche Rust:

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);
    }
}

Eigenschaften, die ich möchte:

die Eltern übernehmen die Verantwortung für ihre Kinderie Knoten sind von außen über eine Referenz zugänglic Ereignisse, die eins berührenNode kann möglicherweise den gesamten Baum mutieren

Antworten auf die Frage(6)

Ihre Antwort auf die Frage