É possível criar um closure recursivo em Rust?
Olá a todos! Estou aprendendo Rust e tentando escrever um closure recursivo para calcular o fatorial. Aqui está meu código:
```rust
let factorial = |n: u32| -> u32 {
if n <= 1 {
1
} else {
n * factorial(n - 1) // erro: cannot capture `factorial` in its own initializer
}
};
```
O compilador dá o erro: "cannot capture `factorial` in its own initializer". Entendo que o closure não pode capturar uma variável que ainda não foi totalmente inicializada. Mas como então fazer um closure recursivo?
Tentei declarar `factorial` como `let factorial: Box u32>`, mas não ajudou. Sei que posso usar uma função normal `fn factorial(n: u32) -> u32`, mas preciso especificamente de um closure, porque quero capturar variáveis externas.
Diga-me como organizar corretamente a recursão em um closure? De preferência com um exemplo de código que funcione. Desde já agradeço!
<<>>
O problema dos closures recursivos em Rust
De fato, diretamente