Command-Line Tools
Config Precedence
Prefer CLI over Defaults
A command-line value usually overrides environment or default configuration.
Program
Play the program to choose the CLI port option and see which port wins.
config_precedence.rs
fn main() {
let cli_port = ;
let env_port = Some(7000);
let port = choose_port(cli_port, env_port);
println!("{port}");
}
fn choose_port(cli_port: Option<i32>, env_port: Option<i32>) -> i32 {
cli_port.or(env_port).unwrap_or(3000)
}
fn main() {
let cli_port = ;
let env_port = Some(7000);
let port = choose_port(cli_port, env_port);
println!("{port}");
}
fn choose_port(cli_port: Option<i32>, env_port: Option<i32>) -> i32 {
cli_port.or(env_port).unwrap_or(3000)
}
fn main() {
let cli_port = ;
let env_port = Some(7000);
let port = choose_port(cli_port, env_port);
println!("{port}");
}
fn choose_port(cli_port: Option<i32>, env_port: Option<i32>) -> i32 {
cli_port.or(env_port).unwrap_or(3000)
}
precedence
`cli_port.or(env_port)` prefers the command-line option when it is present.
Option
`Option<i32>` models whether a configuration value was provided.
default
`unwrap_or(3000)` supplies a fallback if neither source has a value.