3个版本 (稳定)
1.1.0 | 2023年10月5日 |
---|---|
1.0.0 | 2023年9月20日 |
0.1.0 | 2023年9月19日 |
#1857 in Rust模式
每月下载量54次
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