Usare funzioni come parametri in Rust

Mattepuffo's logo
Usare funzioni come parametri in Rust

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!


Condividi

Commentami!