#env-file #values #structs #cli #arguments #command-line-arguments #populate

from_env

使用.env文件或CLI参数填充结构体中的值

2个版本

0.1.1 2023年8月6日
0.1.0 2023年8月6日

#48 in #env-file

MIT许可证

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_fileserver_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