< 返回版块

西沉 发表于 2021-01-07 21:59

Tags:config

本期的每周一库带来的是一个简单的配置文件读取库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(())
}

运行结果如下
rust-configster.png

以上就是本期每周一库的全部内容

评论区

写评论
spacemeowx2 2021-01-11 02:47

感觉不如structopt+dotenv方便啊

colatea 2021-01-08 17:21

感觉还没自己写个库方便。

jonirrings 2021-01-08 14:47

nice,手动传参+配置传参才是完整体。

1 共 3 条评论, 1 页