本期的每周一库带来的是一个简单的配置文件读取库Configster
当我们基于大型现成开发框架做开发的时候,配置文件的定义和格式早已被设置的妥妥当当,我们只需要在对应的文件中遵循格式做设置即可,例如dotnet开发中的App.config,定义好key和value,直接在程序中引用Configuration object就可以方便的读取配置信息。
但是当我们做一些轻量级cli程序或自己基于一些轮子做开发时,如果把配置信息都写到程序里会造成一些开发效率的折损。这时候一个能够快速嵌入到程序中的配置文件库就非常讨巧了。
Configster就是一个这样轻量级的配置文件库
它的github仓库给出了api介绍和一个简单的例子,configster的配置文件api定义非常简单
#[derive(Debug, PartialEq)]
pub struct Value {
pub primary: String,
pub attributes: Vec<String>,
}
#[derive(Debug, PartialEq)]
pub struct OptionProperties {
pub option: String,
pub value: Value,
}
我们只需要遵循这个定义就可以在我们的rust程序中使用配置文件中定义的值
接下来我们来试用一下configster
测试环境
- Windows 10
cargo --version
: cargo 1.46.0-nightly (089cbb80b 2020-06-15)rustc --version
: rustc 1.46.0-nightly (6bb3dbfc6 2020-06-22)
当前configster的release版本是0.1.1,这里使用configster例子来试用
在工程根目录创建配置文件configuration.conf
,并写入如下内容
type = "每周一库"
lib_name = "configster"
写入github页面示例代码
use std::io;
fn main() -> Result<(), io::Error> {
let config_vec = configster::parse_file("./configuration.conf", ',')?;
for i in &config_vec {
println!("Option:'{}' | value '{}'", i.option, i.value.primary);
for j in &i.value.attributes {
println!("attr:'{}`", j);
}
println!();
}
Ok(())
}
运行结果如下
以上就是本期每周一库的全部内容
1
共 3 条评论, 1 页
评论区
写评论感觉不如structopt+dotenv方便啊
感觉还没自己写个库方便。
nice,手动传参+配置传参才是完整体。