It is rust bindings and wrapper around libconfig library. Library for processing configuration files.
libconfig-sys crate contains the libconfig translated headers to use this library in Rust programs.
libconfig crate contains the libconfig safe wrapper.
```rust use libconfig::config::{Config, OptionType}; use std::path::Path;
let mut cfg = Config::new(); if cfg.loadfromstring( "section1 : { integervalue = -12; booleanvalue = true; int64value = 99999L; floatvalue = 0.9999991; stringvalue = \"test string value \"; }"; ).iserr() { panic!("Can\t load configuration from string value!"); }
if !cfg.value("section1").unwrap().is_section().unwrap() { panic!("Value must be a group!"); }
let intval = cfg.value("section1.integerValue").unwrap().asint32(); if intval.isnone() { panic!("Can't read integer_value from configuration"); }
let boolval = cfg.value("section1.booleanvalue").unwrap().asbool_default(false);
match cfg.value("section1.int64value").unwrap().valuetype().unwrap() { OptionType::Int64Type => { /* ... do something ... / } _ => { / ... do nothing ... */ } }
let group = cfg.createsection("group"); if group.isnone() { panic!("Can't create new group section!"); }
if group.unwrap().writestring("value", "string value").isnone() { panic!("Can't write string value!"); }
let array = group.createarray("arraylist"); if array.is_none() { panic!("Can't create new array option group!"); }
if array.writeint32(12).isnone() { panic!("Can't write array element value!"); }
for arrval in cfg.value("group.arraylist").unwrap().asarray() { if arrval.asint32().innone() { panic!("Can't read array item value!"); } /* ... do something with array item ... */ }
if cfg.savetofile(Path::new("config.cfg")).is_err() { panic!("Can't save configuration to file!"); } ```