2个版本
0.1.1 | 2020年11月8日 |
---|---|
0.1.0 | 2020年11月8日 |
#772 in 配置
10KB
88 代码行
envconf
结构体从环境变量中无样板初始化
用法
程序通常依赖于环境变量来定义其行为,尤其是对于云计算和微服务应用。想象你需要通过以下环境变量设置数据库连接
- DB_HOST
- DB_PORT
- DB_USER
- DB_PASSWORD
- DB_NAME
使用这个库crates,就像这样简单
use envconf::{Setting, Error};
#[derive(Setting)]
struct DBSettings {
#[conf(env = "DB_HOST", default = "localhost")]
host: String,
#[conf(env = "DB_PORT", default = 5432)]
port: usize,
#[conf(default = "myuser")] // hardcoded setting
user: String,
#[conf(env = "DB_PASSWORD")] // env variable required
password: String,
#[conf(env = "DB_NAME", default = "mydb")]
name: String,
}
fn main() -> Result<(), Error<'static>> {
// This env is mandatory, so it needs to be set!
std::env::set_var("DB_PASSWORD", "secret");
// Initialize config from environment variables
// Read the crate docs to check the possible Error variants
let db_settings = DBSettings::init()?;
assert_eq!(db_settings.host, "localhost");
assert_eq!(db_settings.port, 5432);
assert_eq!(db_settings.user, "myuser");
assert_eq!(db_settings.password, "secret");
assert_eq!(db_settings.name, "mydb");
Ok(())
}
贡献
如果你发现了一个漏洞、错误或想要添加新功能,请创建一个新的问题。
为了将你的更改引入代码库,提交一个Pull Request。
非常感谢!
许可证
envconf根据MIT许可证和Apache许可证(版本2.0)的条款分发。
请参阅LICENSE-APACHE和LICENSE-MIT,以及COPYRIGHT以获取详细信息。
依赖关系
~1.5MB
~35K SLoC