Avatar ·

Warum sind rekursive Datenstrukturen in Rust verboten und wie erstellt man sie richtig?

Hallo Kollegen! Ich habe angefangen, Rust zu lernen, und bin auf einen unverständlichen Fehler gestoßen. Ich möchte eine einfache verkettete Liste wie in C oder Python erstellen: ```rust struct Node { value: i32, next: Node, // Fehler: recursive type `Node` has infinite size } ``` Der Compiler sagt: "recursive type `Node` has infinite size". Ich verstehe, dass Rust bei Typgrößen streng ist, aber warum ist das ein Problem? In C kann ich `struct Node { int value; struct Node* next; }` machen – dort ist es ein Pointer, und alles funktioniert. In Python kann man sogar ein Objekt in sich selbst speichern. Warum verbietet Rust solche Rekursion? Und wie macht man dann Listen, Bäume und andere rekursive Strukturen? Ich habe von `Box` gehört, verstehe aber nicht, warum es das Problem löst. Bitte erklärt es mir in einfachen Worten mit Beispielen. Vielen Dank im Voraus! <<>>

По