INNER CODE UNIT · Rust
remove
hcavarsan/kftray · crates/kftray-commons/src/lib.rs:123
pub fn remove(key: &str) -> Self {
let _lock = EnvLock::acquire();
let key = key.to_string();
let original_value = std::env::var(&key).ok();
unsafe { std::env::remove_var(&key) };
EnvVarGuard {
key,
original_value,
_lock,
}
}
}
impl Drop for EnvVarGuard {
fn drop(&mut self) {
match &self.original_value {
Some(val) => unsafe { std::env::set_var(&self.key, val) },
None => unsafe { std::env::remove_var(&self.key) },