pub fn env_or_default(key: &str, default: &str) -> String {
std::env::var(key).unwrap_or_else(|_| default.to_string())
}
pub fn env_or_else<F>(key: &str, f: F) -> String
where
F: FnOnce() -> String,
{
std::env::var(key).unwrap_or_else(|_| f())
}
pub fn env_opt(key: &str) -> Option<String> {
std::env::var(key).ok()
}
pub fn env_bool(key: &str) -> bool {
std::env::var(key)
.ok()
.map(|v| {
let v_lower = v.to_lowercase();
v_lower == "true" || v_lower == "1" || v_lower == "yes" || v_lower == "on"
})
.unwrap_or(false)
}
pub fn env_int<T>(key: &str) -> Option<T>
where
T: std::str::FromStr,
{
std::env::var(key).ok()?.parse().ok()
}