Avatar ·

Kann man ein rekursives Closure in Rust erstellen?

Hallo zusammen! Ich lerne Rust und versuche, ein rekursives Closure zur Berechnung der Fakultät zu schreiben. Hier ist mein Code: ```rust let factorial = |n: u32| -> u32 { if n <= 1 { 1 } else { n * factorial(n - 1) // Fehler: cannot capture `factorial` in its own initializer } }; ``` Der Compiler gibt einen Fehler aus: "cannot capture `factorial` in its own initializer". Ich verstehe, dass das Closure keine Variable erfassen kann, die noch nicht vollständig initialisiert ist. Aber wie erstellt man dann ein rekursives Closure? Ich habe versucht, `factorial` als `let factorial: Box u32>` zu deklarieren, aber das hat nicht geholfen. Ich weiß, dass man eine normale Funktion `fn factorial(n: u32) -> u32` verwenden kann, aber ich brauche genau ein Closure, weil ich externe Variablen erfassen möchte. Könnt ihr mir sagen, wie