10个版本 (稳定)
2.2.0 | 2022年7月1日 |
---|---|
2.0.1 | 2021年7月27日 |
1.1.1 | 2020年2月4日 |
1.1.0 | 2019年6月17日 |
0.2.0 | 2019年1月30日 |
#300 in 配置
28KB
527 行
Confindent
Configuration by indentation. Read the spec inspired by the format of the ssh client configuration commonly found on Linux machines at ~/.ssh/config
.
示例,简洁明了
use confindent::Confindent;
fn main() {
let conf: Confindent = "Pet Dog\n\tName Brady\n\tAge 10".parse().unwrap();
let pet = conf.child("Pet").unwrap();
let name = pet.child_value("Name").unwrap();
let age: usize = pet.child_parse("Age").unwrap();
let word = match pet.value() {
Some("Dog") => "pupper",
Some("Cat") => "kitty",
_ => panic!(),
};
if age > 9 {
println!("{}! {} is an old {}.", age, name, word);
} else {
println!("Only {}! {} is a good, young {}.", age, name, word);
}
}
快速入门!
格式,简要说明。 这是非常详尽的规范
它是一种树形,键值对的形式。行是键值对,值从缩进后的第一个空格开始。你可以通过缩进空格或制表符给值添加一个子项。对同一值添加另一个子项时,缩进相同的数量。要添加一个孙项,则缩进量应多于最初。不要混用空格和制表符。就像这样!
Root this is the root
Child I'm a child!
Child You can have multiple children with the same keys!
Grandchild I'm a grandchild!
使用crate,快速! 还有,这里再次是文档
使用Confindent::from_file
函数打开并解析文件。传入一个路径。它返回一个Result<Confindent, ParseError>
。
使用child(key)
函数获取直接子项。键需要能转换为&str
。这返回一个Option<&Value>
。 Value
是主要的数据存储结构。你可以使用children(key)
获取同一名称的多个Value,它返回一个Vec<&Value>
。
您可以使用 value()
方法获取 Value
的值。它返回一个 Option<&str>
。使用 value_owned()
获取一个拥有 Option<String>
。如果您想检查一个 Value
是否有直接子项,但不关心其值,请使用 has_child(key)
。它返回一个表示是否找到具有该键的子项的 bool
。
想将可能的值解析为不同的类型 T
吗?不要使用 value()
,而是使用 parse()
。它返回一个 Result<T, ValueParseError<T>>
。这个类型可能看起来很奇怪,因为它确实如此。 ValueParseError
是一个枚举,可以是 NoValue
或 ParseError(error)
,其中 error
是 T::FromStr
返回的错误部分。
不想先调用 child(key)
然后再调用 value()
或 parse()
?您可以使用 child_value(key)
和 child_parse(key)
同时完成这两个操作。这两个函数分别返回 value()
和 parse()
通常返回的结果。还有一个 child_owned()
方法,类似于 value_owned()
,其中它返回一个子项值的 Option<String>
。