Avatar ·

¿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