2 个版本
0.1.1 | 2020年9月14日 |
---|---|
0.1.0 | 2020年6月21日 |
#799 in 配置
每月 22 次下载
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