#env #temp #directory #guard #drop #env-var

tmp_env

一个crate,允许您创建临时环境,当不再需要时自动恢复/清理

2个版本

0.1.1 2021年6月16日
0.1.0 2021年6月9日

#551 in 配置

Download history 928/week @ 2024-03-14 613/week @ 2024-03-21 407/week @ 2024-03-28 332/week @ 2024-04-04 755/week @ 2024-04-11 357/week @ 2024-04-18 320/week @ 2024-04-25 300/week @ 2024-05-02 306/week @ 2024-05-09 351/week @ 2024-05-16 347/week @ 2024-05-23 242/week @ 2024-05-30 248/week @ 2024-06-06 880/week @ 2024-06-13 576/week @ 2024-06-20 290/week @ 2024-06-27

2,018 每月下载次数
2 crate 中使用

自定义许可

11KB
132

tmp_env

Version Documentation

tmp_env 是一个crate,允许您创建临时环境,当不再需要时自动清理。

例如,有时您需要更改当前目录或设置环境变量来启动进程,但您不需要在程序的其余部分中使用此临时环境。然后您将使用 tmp_env 来创建环境变量,使用 tmp_env::set_var 而不是 std::env::set_var,从 tmp_env::set_var 获取一个数据结构,当丢弃时会自动恢复对应的环境变量。

安装

将此依赖项放入您的 Cargo.toml

tmp_env = "0.1"

使用方法

  • 临时更改当前目录
{
    let _tmp_current_dir = tmp_env::set_current_dir("src").expect("should set the new current_dir");
    let current_dir = std::env::current_dir().expect("cannot get current dir from std env");
    assert!(current_dir.ends_with("src"));
}
let current_dir = std::env::current_dir().expect("cannot get current dir from std env");
assert!(!current_dir.ends_with("src"));
  • 临时设置环境变量
{
    let _tmp_env = tmp_env::set_var("TEST_TMP_ENV", "myvalue");
    assert_eq!(std::env::var("TEST_TMP_ENV"), Ok(String::from("myvalue")));
}
// Because guard `_tmp_env` is dropped then the environment variable is also automatically unset (not restored because no previous value was set)
assert!(std::env::var("TEST_TMP_ENV").is_err());
  • 临时创建目录
{
    let tmp_dir = tmp_env::create_temp_dir().expect("cannot create temp dir"); // When tmp_dir is dropped this temporary dir will be removed
    assert!(std::fs::metadata(&*tmp_dir).is_ok());
}
// The temporary directory is now removed

依赖

~310KB