#env-var #environment #variables #derive #structs #configuration #config-file

derive_environment

一个通过环境变量修改结构的Rust库。

3个版本 (稳定)

1.1.0 2023年10月5日
1.0.0 2023年9月20日
0.1.0 2023年9月19日

#1857 in Rust模式

Download history 3/week @ 2024-07-01 54/week @ 2024-07-29

每月下载量54次

GPL-3.0-or-later

18KB
138 代码行

一个通过环境变量修改结构的Rust库。

envy不同,它不创建一个新对象。它用于重新配置现有的结构(例如,从配置文件解析后)。

忽略的字段

如果某个字段不应通过环境变量进行配置,请用#[env(ignore)]标记。

示例

创建配置结构

use derive_environment::FromEnv;

#[derive(Default, FromEnv)]
pub struct Config {
    // ...
}

// Creates a base configuration struct to add on to.
// Normally this would be created using `serde` from a config file.
let mut config = Config::default();
// Names the struct "MY_CONFIG", which acts as a prefix.
config.with_env("MY_CONFIG").unwrap();

嵌套字段

use derive_environment::FromEnv;

#[derive(FromEnv)]
struct ServerConfig {
    port: u16,
}

#[derive(FromEnv)]
pub struct Config {
    server: ServerConfig,
}

生成

  • MY_CONFIG_SERVER_PORT

嵌套字段的向量

use derive_environment::FromEnv;

// `Vec`'s `FromEnv` implementation requires `Default`.
#[derive(Default, FromEnv)]
struct ServerConfig {
    port: u16,
}

#[derive(FromEnv)]
pub struct Config {
    servers: Vec<ServerConfig>,
}

生成

  • MY_CONFIG_SERVER_0_PORT

依赖

~1.2–2.6MB
~64K SLoC