cfg-rs: A Configuration Library for Rust Applications

Crates.io Crates.io Documentation dependency status License Actions Status Minimum supported Rust version

Major Features

See the examples for general usage information.

Supported File Format

How to Initialize Configuration

rust,no_run use cfg_rs::*; let configuration = Configuration::with_predefined().unwrap(); // use configuration. See init for details.

rust,no_run use cfg_rs::*; init_cargo_env!(); let configuration = Configuration::with_predefined_builder() .set_cargo_env(init_cargo_env()) .init() .unwrap(); // use configuration. See init for details.

```rust,norun use cfgrs::*; initcargoenv!(); let mut configuration = Configuration::new() // Layer 0: Register cargo env config source. .registersource(initcargoenv()).unwrap() // Layer 1: Register customized config. .registerkv("customized_config") .set("hello", "world") .finish() .unwrap(); // Layer 2: Register random value config.

[cfg(feature = "rand")]

{ configuration = configuration.registerrandom().unwrap(); } // Layer 3: Register all env variables CFG_*. configuration = configuration.registerprefixenv("CFG").unwrap() // Layer 4: Register yaml file(Need feature yaml). .registerfile("/conf/app.yaml", true).unwrap();

[cfg(feature = "toml")]

{ let toml = inlinesource!("../app.toml").unwrap(); configuration = configuration.registersource(toml).unwrap(); }

// use configuration. ``` See registerkv, registerfile, registerrandom, registerprefix_env for details.