use std::{
env::{VarError, set_var as _set_var, var as _var, vars},
ffi::OsStr,
};
pub fn set_vars(vars: Vec<(&str, &str)>) {
vars.iter().for_each(|(k, v)| set_var(k, v));
}
pub fn set_var<K: AsRef<OsStr>, V: AsRef<OsStr>>(
key: K,
value: V,
) {
unsafe { _set_var(key, value) };
}
pub fn get_vars() -> Vec<(String, String)> {
vars().collect()
}
pub fn get_var<K: AsRef<OsStr>>(name: K) -> Result<String, VarError> {
_var(name)
}
pub fn var<K: AsRef<OsStr>>(name: K) -> String {
match _var(&name) {
| Ok(val) => val,
| Err(_) => panic!(
"Failed to get environment variable: {}",
name.as_ref()
.to_str()
.unwrap_or("Failed to get environment variable.")
),
}
}