#wrapper #configuration #processing #libconfig #bindings #api-bindings #root

librustconfig

libRustConfig 是围绕 libconfig 库的 Rust 封装。用于处理配置文件的库。

2 个版本

0.1.1 2020年9月14日
0.1.0 2020年6月21日

#799 in 配置

每月 22 次下载

MIT 许可证

71KB
992

libRustConfig

它是 Rust 对 libconfig 库的绑定和封装。用于处理配置文件的库。

目录

要求

库是用最新的稳定版 Rust 编译器(rustc 1.46.0 (04488afe3 2020-08-24))编写的。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
librustconfig = "0.1.*"

用法

添加到您的 crate 根目录

extern crate config;

绑定

libconfig-sys crate 包含用于在 Rust 程序中使用此库的 libconfig 翻译头。

封装

libconfig crate 包含 libconfig 安全封装。

用法示例

创建
use libconfig::config::{Config, OptionType};
use std::path::Path;

let mut cfg = Config::new();
if cfg.load_from_string(
	"section1 : {
		integer_value = -12;
    	boolean_value = true;
    	int64_value = 99999L;
    	float_value = 0.9999991;
    	string_value = \"test string value \";
    }";
).is_err() {
    panic!("Can\t load configuration from string value!");
}
插入
let group = cfg.create_section("group");
if group.is_none() {
    panic!("Can't create new group section!");
}

if group.unwrap().write_string("value", "string value").is_none() {
    panic!("Can't write string value!");
}
插入组
let array = group.create_array("array_list");
if array.is_none() {
    panic!("Can't create new array option group!");
}

if array.write_int32(12).is_none() {
    panic!("Can't write array element value!");
}
if !cfg.value("section1").unwrap().is_section().unwrap() {
    panic!("Value must be a group!");
}

let _int_val = cfg.value("section1.integer_Value").unwrap().as_int32();
if int_val.is_none() {
    panic!("Can't read integer_value from configuration");
}

match cfg.value("section1.int64_value").unwrap().value_type().unwrap() {
    OptionType::Int64Type => { /* ... do something ... */ }
    _ => { /* ... do nothing ... */ }
}
搜索默认
let _bool_val = cfg.value("section1.boolean_value").unwrap().as_bool_default(false);
迭代
for arr_val in cfg.value("group.array_list").unwrap().as_array() {
    if arr_val.as_int32().in_none() {
        panic!("Can't read array item value!");
    }
    /* ... do something with array item ... */
}
保存
if cfg.save_to_file(Path::new("config.cfg")).is_err() {
    panic!("Can't save configuration to file!");
}

依赖项

~43KB