Configuration and Runtime Flags
Runtime Config
Layered Values
Programs often merge defaults, environment-like settings, and command-line overrides into one effective value.
Program
Play the program to choose a command-line timeout and see which layer wins.
env_layer_config.rs
fn main() {
let default_timeout = 10;
let env_timeout = Some(15);
let cli_timeout = ;
let timeout = cli_timeout.or(env_timeout).unwrap_or(default_timeout);
println!("timeout={timeout}");
}
fn main() {
let default_timeout = 10;
let env_timeout = Some(15);
let cli_timeout = ;
let timeout = cli_timeout.or(env_timeout).unwrap_or(default_timeout);
println!("timeout={timeout}");
}
fn main() {
let default_timeout = 10;
let env_timeout = Some(15);
let cli_timeout = ;
let timeout = cli_timeout.or(env_timeout).unwrap_or(default_timeout);
println!("timeout={timeout}");
}
default
`default_timeout` is the fallback when no higher layer provides a value.
Option
`Some(value)` means the layer supplied a value; `None` means it did not.
precedence
`cli_timeout.or(env_timeout).unwrap_or(default)` chooses CLI, then environment, then default.