// Rust requires every function parameter to be explicitly provided.
// Use a Default Value via a Struct
// Rust doesn’t support default parameters, but structs can implement Default.
#[derive(Default)]
struct GreetOptions<'a> {
name: Option<&'a str>,
shout: bool,
}
fn greet(opts: GreetOptions) {
let mut name: String = opts.name.unwrap_or("Guest").to_string();
if opts.shout {
name = name.to_uppercase();
}
println!("Hello, {}!", name);
}
fn main() {
greet(GreetOptions::default());
greet(GreetOptions { name: Some("Galaxian"), shout: true });
}
/*
run:
Hello, Guest!
Hello, GALAXIAN!
*/