cfg_mgr

Crates.iocfg_mgr
lib.rscfg_mgr
version0.1.0
sourcesrc
created_at2022-08-11 22:25:43.628812
updated_at2022-08-11 22:25:43.628812
descriptionThis crate provides an easy way to import a plain text configuration file into a machine readable structure (HashMap).
homepage
repositoryhttps://github.com/rlado/cfg_mgr
max_upload_size
id643623
size43,108
Ricard Lado, PhD (RLado)

documentation

README

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]


#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.

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:

path: ;some/path/example.txt
foo: 3.1415, ;
foobar: 3.1415, 0.001, ;
bar: 0.001, ;
Commit count: 3

cargo fmt