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 模式
212 每月下载量
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 版本时重新审视此策略。