1个稳定版本
使用旧的Rust 2015
1.0.0 | 2020年2月17日 |
---|
#78 在 #配置管理
用于 项目
10KB
87 行
confy
零样板配置管理。
专注于存储正确的数据,而不是担心如何存储。
#[derive(Serialize, Deserialize)]
struct MyConfig {
version: u8,
api_key: String,
}
/// `MyConfig` implements `Default`
impl ::std::ops::Default for MyConfig {
fn default() -> Self { Self { version: 0, api_key: "".into() } }
}
fn main() -> Result<(), ::std::io::Error> {
let cfg = confy::load("my-app-name")?;
}
lib.rs
:
零样板配置管理
为什么?
在根据操作系统和其他环境因素选择、加载和编写配置时,有许多不同的要求。
在许多应用程序中,这种负担留给了你,即应用程序的开发者,去决定配置文件应该放在哪里。
这就是confy
发挥作用的地方。
想法
confy
负责在读取和写入配置之前确定操作系统特定的和环境路径。
它通过serde提供对配置文件的轻松访问,并将其映射到一个Rust struct
。这样,你只需要担心配置的布局,而不需要担心存储的位置和方式。
confy
使用Rust中的Default
特质自动创建一个新的配置(如果尚未提供读取配置),这意味着你可以简单地假设你的应用程序具有配置,该配置将使用你选择的默认值创建,而不需要任何特殊的逻辑来处理创建。
#[derive(Serialize, Deserialize)]
struct MyConfig {
version: u8,
api_key: String,
}
/// `MyConfig` implements `Default`
impl ::std::default::Default for MyConfig {
fn default() -> Self { Self { version: 0, api_key: "".into() } }
}
fn main() -> Result<(), ::std::io::Error> {
let cfg = confy::load("my-app-name")?;
}
然后通过store
函数来更新配置。
依赖关系
~375–790KB
~13K SLoC