Parametri opzionali in Rust

Mattepuffo's logo
Parametri opzionali in Rust

Parametri opzionali in Rust

Rust non supporta i parametri opzioni nelle funzioni.

Ovviamente è possibile arrivare ad ottenere questo comportamento; abbiamo almeno due modi:

  • usando Optional
  • usando Enum

Diciamo che il primo modo è più semplice, ma è meno Rust style.

Comunque, cominciamo dal primo modo:

fn print_nome(nome: Option<String>) {
    println!("{}", nome.unwrap_or(String::from("ND")))
}

fn main() {
    print_nome(None);
    print_nome(Some(String::from("MATTEO!")));
}

Molto easy da impostare.

Ma se volessimo essere più Rust style:

#[derive(Debug)]
enum Nome {
    Empty,
    Is(String),
}

impl Default for Nome {
    fn default() -> Self {
        Nome::Is(String::from("ND"))
    }
}

fn print_nome(nome: Nome) {
    match nome {
        Nome::Empty => println!("{:?}", Nome::default()),
        Nome::Is(value) => println!("{}", value),
    }
}

fn main() {
    print_nome(Nome::Empty);
    print_nome(Nome::Is(String::from("MATTEO!")));
}

Questo secondo modo comporta più codice in effetti; ma nel caso in cui dovessimo usare di più i parametri opzionali può essere più flessibile.

Enjoy!


Condividi

Commentami!