9 个版本

0.2.7 2023年2月8日
0.2.6 2023年2月7日
0.2.5 2023年1月13日
0.1.0 2023年1月12日

#1214 in Rust 模式

Download history 9/week @ 2024-03-08 27/week @ 2024-03-15 142/week @ 2024-03-22 110/week @ 2024-03-29 86/week @ 2024-04-05 87/week @ 2024-04-12 104/week @ 2024-04-19 146/week @ 2024-04-26 158/week @ 2024-05-03 172/week @ 2024-05-10 190/week @ 2024-05-17 183/week @ 2024-05-24 169/week @ 2024-05-31 7/week @ 2024-06-07

212 每月下载量

MIT/Apache

11KB
100 代码行

menv

此软件包提供了一个宏(require_envs!),用于断言一系列环境变量的存在,并按实现了 FromStr 的类型访问它们。

生成以下内容

  • 一个断言一系列环境变量存在和良好格式的函数
  • 一个返回一个 bool 的函数,表示是否设置了所需的任何变量
  • 一个返回一个 String 的函数,表示变量的收集帮助消息
  • 一系列函数,每个函数对应一个所需的环境变量,用于解析并返回关联的环境变量

示例

在此,我们使用所需的变量填充一个 env 模块,如果没有设置任何变量则打印帮助信息并退出,如果设置了某些变量则运行断言,然后继续执行。

由于断言在 main 函数的开始处运行,因此此程序的其它部分现在可以自由访问 env::server_port()env::db_path(),就像它们是不可失败的一样。

获取器函数名称可以后缀 ? 以使其环境变量可选。在此示例中,plugin_dir 的返回类型是 Option<String>

mod env {
    use menv::require_envs;
    require_envs! {
        (assert_env_vars, any_set, gen_help);

        server_port, "FERRISCRAFT_USERS_PORT", u16,
        "FERRISCRAFT_USERS_PORT should be set to the desired server port";

        db_path, "FERRISCRAFT_USERS_DB", String,
        "FERRISCRAFT_USERS_DB should be set to the path to the users database";

        plugin_dir?, "XLANG_PLUGIN_DIR", String,
        "XLANG_PLUGIN_DIR, if set, overrides the directory that lccc looks for xlang plugins";
    }
}
fn main() {
   if env::any_set() {
        env::assert_env_vars();
    } else {
        println!("# Environment Variables Help\n{}", env::gen_help());
        return
    }
}

MSRV

此软件包与 Rust 的最新稳定版本进行了测试。它可能适用于许多更早的版本,但我不能保证它将永久如此。

我将在 1.0 版本时重新审视此策略。

依赖关系