5个版本
0.1.3 | 2024年1月22日 |
---|---|
0.1.2 | 2024年1月21日 |
0.1.1 | 2024年1月21日 |
0.1.0 | 2024年1月21日 |
0.0.1 | 2024年1月21日 |
#479 in 配置
10KB
Config Generator
为Rust中的配置结构生成样板代码的派生宏。
安装和使用
要安装此crate,将其添加为依赖项
cargoadd config-generator
此外,需要serde和tomlcrates来支持从toml加载。
cargoadd serde toml
要使用,定义一个包含配置变量的结构,这些变量将由生成的代码加载。 env_key
注解定义一个环境变量键,该键将用于从环境加载变量。
use config_generator::ConfigGenerator;
#[derive(ConfigGenerator, Default)]
struct Config {
#[env_key = "NAME_ENV_KEY"]
pub name: String,
#[env_key = "THREAD_COUNT"]
pub thread_count: u32,
#[env_key = "ALLOWED_ORIGINS"]
pub allowed_origins: Vec<String>,
#[env_key = "ASSETS_PATH"]
pub assets_path: Option<String>,
}
生成的实现将允许从toml文件、环境或两者同时加载配置,已加载的变量将覆盖之前设置的变量。请注意,您需要实现一种方法来获取配置的初始状态(可能是在上面定义一个new
方法或派生Default
)。
// Loads a default config first from a toml file,
// then overlays environment variable values.
let config = Config::default()
.with_toml("path/to/config.toml")
.with_environment();
功能
默认情况下,启用了load_toml
功能,在输入结构上提供with_toml
函数实现,因此需要serde和tomlcrates。此功能可以禁用,并且如果用户选择,可以删除这些crate。
致谢
此宏受optional_struct宏的启发,该宏也是学习如何在Rust中编写过程宏的有用资源。
依赖项
~295–750KB
~18K SLoC