Como passar uma função como parâmetro em Rust?
Olá a todos! Comecei a estudar Rust recentemente e encontrei um problema que parece simples, mas não consigo encontrar a solução correta. Quero escrever uma função que recebe outra função como argumento para tornar o código mais flexível.
Aqui está o que estou tentando fazer:
```rust
fn apply_twice(f: ???, x: i32) -> i32 {
f(f(x))
}
fn add_one(x: i32) -> i32 {
x + 1
}
fn main() {
let result = apply_twice(add_one, 5);
println!("{}", result); // Espero 7
}
```
Não entendo qual tipo especificar para o parâmetro `f`. Tentei `fn(i32) -> i32`, mas o compilador reclama. Também ouvi sobre closures e os traits `Fn`, `FnMut`, `FnOnce` — mas qual é a diferença? Quando usar cada um deles? Como passar uma closure que captura variáveis do escopo externo?
Explique, por favor, como passar funções e closures corretamente em Rust. De preferência com exemplos de código. Desde já, obrigado!
<<>>
Principais abordagens para passar funções em Rust
No answers yet.
Faça login para deixar uma resposta
Blogs
Trabalho com JSON em PHP: parsing e serialização para iniciantes
Filas de Tarefas em Java para Iniciantes: Um Guia Simples
Destaque-se entre os juniores: melhores projetos em Kotlin para portfólio
Microsserviços em Java: arquitetura e prática de nível avançado