valk_utils/
lib.rs

1use std::str::FromStr;
2
3pub fn parse_var<T: FromStr>(name: &str) -> T {
4    get_var(name)
5        .parse::<T>()
6        .unwrap_or_else(|_| panic!("Could not parse {name} as {}!", std::any::type_name::<T>()))
7}
8
9pub fn parse_var_or<T: FromStr>(name: &str, value: T) -> T {
10    parse_var_or_else(name, || value)
11}
12
13pub fn parse_var_or_else<T: FromStr>(name: &str, default: impl FnOnce() -> T) -> T {
14    if let Ok(data) = std::env::var(name) {
15        data.parse::<T>()
16            .unwrap_or_else(|_| panic!("Could not parse {name} as {}!", std::any::type_name::<T>()))
17    } else {
18        default()
19    }
20}
21
22pub fn get_var(name: &str) -> String {
23    std::env::var(name).unwrap_or_else(|_| panic!("Expected {name} in the environment!"))
24}