Usare funzioni come parametri in Rust
In Rust possiamo usare le funzioni in diversi modi interessanti.
Ad esempio possiamo salvarla in una variabile, e poi usare questa passandogli l'argomento richiesto.
fn main() {
let somma = fn_somma;
println!("{}", somma(5));
}
fn fn_somma(numero: i32) -> i32 {
return numero + 1;
}
Se invece volessimo creare una funzione che deve essere poi passata come argomento di un'alra funzione?
Possiamo fare così:
fn main() {
println!("{}", fn_somma(3, somma));
}
fn fn_somma<F>(numero: i32, operazipne: F) -> i32 where F: Fn(i32) -> i32 {
operazipne(numero)
}
fn somma(numero: i32) -> i32 {
numero + 1
}
In pratica nella funzione fn_somma abbiamo passato due argomenti:
- il numero da sommare
- una funzione, indicandogli un tipo generic (F); questo viene ridefinito dalla clausola where
Poi abbiamo creato una funzione a se che effettua la somma (la funzione somma).
Enjoy!
rust generic fn
Commentami!