¿Se puede crear un closure recursivo en Rust?
¡Hola a todos! Estoy aprendiendo Rust y tratando de escribir un closure recursivo para calcular el factorial. Aquí está mi código:
```rust
let factorial = |n: u32| -> u32 {
if n <= 1 {
1
} else {
n * factorial(n - 1) // error: cannot capture `factorial` in its own initializer
}
};
```
El compilador da el error: "cannot capture `factorial` in its own initializer". Entiendo que el closure no puede capturar una variable que aún no está completamente inicializada. Pero, ¿cómo hacer un closure recursivo entonces?
Intenté declarar `factorial` como `let factorial: Box u32>`, pero no ayudó. Sé que se puede usar una función normal `fn factorial(n: u32) -> u32`, pero necesito específicamente un closure porque quiero capturar variables externas.
Indíquenme cómo organizar correctamente la recursión en un closure. Preferiblemente con un ejemplo de código que funcione. ¡Gracias de antemano!
<<>>
Problema de los closures recursivos en Rust
Efectivamente, directamente