# cfg_mgr: A basic configuration manager for Rust This crate is built to import a plain text configuration file into a machine readable structure. It's use is very simple, just call load(path :&str) on a properly formatted config file and all it's data will be imported into a HashMap containing a String key and a value in the form of the CfgData structure. The user will require prior knowledge whether to access the numeric or string field. By default all parseable numerical values will be parsed into the numeric field as f64. Multiple numerical entries must be separated by ','. If any of the values of a field can not be parsed the result is dumped in the string field of CfgData. The proper format of a configuration file is as such: -------------------- file: [config.cfg] -------------------- ```text #This is a comment foo = 3.1415 bar = 1e-3 # comment foobar = 3.1415, 1e-3 # multiple arguments are allowed path = some/path/example.txt # this can't be parsed as f64 so it's a string ``` -------------------- ## Examples The following example loads a file named "config.cfg" and prints out it's parsed contents. ```rust use cfg_mgr; fn main() { // Open a configuration file (ignoring errors) let config = cfg_mgr::load("config.cfg").unwrap(); // Loop over all the keys of the configuration HashMap for key in config.keys() { print!("{}: ", key); // Print all numerical values (if any) for a particular key for i in 0..config.get(key).unwrap().numeric.len(){ print!("{}, ", config.get(key).unwrap().numeric[i]); } // Print the string data of a key (if any) (separate using ;) println!(";{}", config.get(key).unwrap().string); } } ``` Result: ```text path: ;some/path/example.txt foo: 3.1415, ; foobar: 3.1415, 0.001, ; bar: 0.001, ; ```