Crate slr_config

Crate slr_config 

Source
Expand description

This crate implements the parsing for the SLRConfig format. Basic usage revolves around the creation and use of the ConfigElement type, like so:

#[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");
}

Re-exports§

pub use ConfigElementKind::*;

Structs§

ConfigElement
A configuration element.
Error
The error type used throughout this crate.
Source
Annotated representation of the configuration source string.

Enums§

ConfigElementKind
The kind of the configuration element.
ErrorKind
An enum describing the kind of the error, to allow treating different errors differenly.

Functions§

from_element
Deserialize a value to a ConfigElement.
to_element
Serialize a value to a ConfigElement.