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!
rust optional enum
Commentami!