#缩进 #配置 #格式

confindent

⚙️ 基于缩进的配置格式

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 配置

ISC许可证

28KB
527

Confindent

Crates Docs Downloads GitHub workflows badge

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 是一个枚举,可以是 NoValueParseError(error),其中 errorT::FromStr 返回的错误部分。

不想先调用 child(key) 然后再调用 value()parse()?您可以使用 child_value(key)child_parse(key) 同时完成这两个操作。这两个函数分别返回 value()parse() 通常返回的结果。还有一个 child_owned() 方法,类似于 value_owned(),其中它返回一个子项值的 Option<String>

没有运行时依赖项