Ist es möglich, eine rekursive Schließung in Rust?

Dies ist ein sehr einfaches Beispiel, aber wie kann ich etwas tun, ähnlich:

let fact = |x: u32| {
    match x {
        0 => 1,
        _ => x * fact(x - 1),
    }
};

Ich weiß, dass dieses spezielle Beispiel kann leicht getan werden mit iteration, aber ich Frage mich, ob es möglich ist, eine rekursive Funktion in Rust für kompliziertere Dinge (wie die Traversierung von Bäumen) oder wenn ich benötigt, um meine eigenen stack statt.

  • Niko Matsakis schrieb ein wunderbarer post darüber, wie Sie potenziell (ab)Rekursion bei Verschlüssen gerade jetzt und warum diese sicherlich entfernt werden (wenn es nicht bereits in incoming). Natürlich können Sie eine Funktion definieren, die sich selbst aufruft, aber Sie nicht zu erfassen äußeren Variablen.
Schreibe einen Kommentar