simple_config 0.134.0

A config language for humans that is not self-describing.
Documentation
#[test]
fn test() {
	#[derive(Debug,PartialEq,serde::Deserialize)]
	struct Inner {
		xyz: String,
		a: u8,
	}

	#[derive(Debug,PartialEq,serde::Deserialize)]
	struct Outer {
		a: Inner,
		abc: Inner,
	}

	let t: Outer = crate::from_bytes(b"
		# Useless comment
		a:
			xyz: foo # Inline
			a: 9
			# After
		abc: # Before indent.
			a: 0
			# Between
			xyz:1
	").unwrap();
	assert_eq!(t, Outer{
		a: Inner{xyz: "foo".into(), a: 9},
		abc: Inner{xyz: "1".into(), a: 0},
	})
}

#[test]
fn int_keys() {
	let t: std::collections::BTreeMap<i8, String> = crate::from_bytes(b"
		1: foo
		2: bar
		-1: zop
	").unwrap();
	assert_eq!(t, [
		(-1, "zop".into()),
		(1, "foo".into()),
		(2, "bar".into()),
	].into_iter().collect())
}

#[test]
fn option_keys() {
	let t: std::collections::BTreeMap<Option<String>, u8> = crate::from_bytes(b"
		any: 3
		2: 1
		: 2
	").unwrap();
	assert_eq!(t, [
		(None, 2),
		(Some("2".into()), 1),
		(Some("any".into()), 3),
	].into_iter().collect())
}