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 slr_config; use slr_config::{ConfigElement, ElementRepr}; 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"); // Compile-time schemas automate the above process in many situations. slr_def! { struct TestSchema { key: u32 = 0, arr: Vec<u32> = vec![] } } let mut schema = TestSchema::new(); 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 = schema.to_element(); 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"); }
Macros
slr_def! |
A macro to define the compile-time schemas for configuration elements. You can use this macro to define structs and enums, like so: |
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. |
Traits
ElementRepr |
Describes a way to convert a type to a ConfigElement and back. |