22个版本

0.0.22 2024年2月5日
0.0.21 2022年7月11日
0.0.20 2020年1月5日
0.0.19 2019年12月27日
0.0.11 2015年7月28日

#196 in 配置

每月22次下载

LGPL-3.0

86KB
3.5K SLoC

这个crate实现了SLRConfig格式的解析。基本用法围绕创建和使用ConfigElement类型,如下所示

#[macro_use]
extern crate serde_derive;
extern crate slr_config;

use slr_config::{to_element, from_element, ConfigElement};
use std::path::Path;

fn main()
{
// Parse config element from value.
let root = ConfigElement::from_str("key = value").unwrap();
assert_eq!(root.as_table().unwrap()["key"].as_value().unwrap(), "value");

// Create a new table and print it to a string.
let mut root = ConfigElement::new_table();
let val = ConfigElement::new_value("value");
root.insert("key", val);
assert_eq!(root.to_string(), "key = value\n");

// You can use Serde as well.
#[derive(Serialize, Deserialize)]
struct TestSchema
{
key: u32,
arr: Vec<u32>,
}

let mut schema = TestSchema {
key: 0,
arr: vec![],
};
schema = from_element(&ConfigElement::from_str("key = 5, arr = [1, 2]").unwrap(), None).unwrap();
assert_eq!(schema.key, 5);
assert_eq!(schema.arr.len(), 2);
assert_eq!(schema.arr[0], 1);
assert_eq!(schema.arr[1], 2);

let elem = to_element(&schema).unwrap();
assert_eq!(elem.as_table().unwrap()["key"].as_value().unwrap(), "5");
assert_eq!(elem.as_table().unwrap()["arr"].as_array().unwrap()[0].as_value().unwrap(), "1");
}

依赖关系

~1.3–2MB
~39K SLoC