use std::env;
use std::fmt::Debug;
use std::str::FromStr;
use tracing::error;
#[must_use]
#[inline]
pub fn get_env_or_default<T: FromStr>(env_var: &str, default: T) -> T
where
<T as FromStr>::Err: Debug,
{
match env::var(env_var) {
Ok(val) => val.parse::<T>().unwrap_or_else(|_| {
error!("Failed to parse {}: {}, using default", env_var, val);
default
}),
Err(_) => default,
}
}
#[must_use]
#[inline]
pub fn get_env_or_none<T: FromStr>(env_var: &str) -> Option<T>
where
<T as FromStr>::Err: Debug,
{
match env::var(env_var) {
Ok(val) => val.parse::<T>().ok(),
Err(_) => None,
}
}