2个版本
0.1.1 | 2023年8月6日 |
---|---|
0.1.0 | 2023年8月6日 |
#48 in #env-file
7KB
105 行
从CLI参数和/或.env
文件填充结构体
预期用法
use from_env::FromEnv;
use lazy_static::lazy_static;
use serde::Deserialize;
fn cred_file() -> String {
"credentials.json".into()
}
fn server_url() -> String {
"127.0.0.1:8080".into()
}
#[derive(Debug, Clone, Deserialize)]
pub struct Constants {
#[serde(default = "cred_file")]
pub cred_file: String,
#[serde(default = "server_url")]
pub server_url: String,
}
lazy_static! {
pub static ref CONSTANTS: Constants =
Constants::from_env().expect("Please provide valid args for constants");
}
现在您可以提供cred_file
和server_url
的值,通过CLI或.env文件,或者两者的组合。任何值都可以省略。CLI值覆盖.env文件,而.env文件则覆盖默认值。
使用.env
文件
cred_file = credentials.json
或在CLI中直接输入
cargo run -- --server_url localhost://8080
底层使用serde_json
。
依赖项
~0.5–0.9MB
~19K SLoC