Crate slr_config[][src]

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 self::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.