cfg-rs-0.2.0 has been yanked.
cfg-rs: A Configuration Library for Rust Applications
Major Features
- One method to get all config objects, see get.
- Automatic derive config object, see FromConfig.
- Support default value for config object by auto deriving, see derived attr.
- Config value placeholder parsing, e.g.
${config.key}, see placeholder. - Random config value, e.g.
configuration.get::<u8>("random.u8")will get randomu8value. - Support refreshable value type RefValue, it can be updated when refreshing.
- Support refresh Configuration.
- Easy to use, easy to add new config source, easy to organize configuration, see register_source.[^priority]
See the examples for general usage information.
[^priority]: Config order is determined by the order of registering sources, register earlier have higher priority.
Supported File Format
- Toml: toml, tml
- Yaml: yaml, yml
- Json: json
How to Initialize Configuration
- Use Predefined Source Configuration in One Line
use *;
let configuration = with_predefined.unwrap;
// use configuration.
See init for details.
- Customize Predefined Source Configuration Builder
use *;
init_cargo_env!;
let configuration = with_predefined_builder
.set_cargo_env
.init
.unwrap;
// use configuration.
See init for details.
- Organize Your Own Sources
use *;
init_cargo_env!;
let mut configuration = new
// Layer 0: Register cargo env config source.
.register_source.unwrap
// Layer 1: Register customized config.
.register_kv
.set
.finish
.unwrap;
// Layer 2: Register random value config.
// Layer 3: Register all env variables `CFG_*`.
configuration = configuration.register_prefix_env.unwrap
// Layer 4: Register yaml file(Need feature yaml).
.register_file.unwrap;
// use configuration.
See register_kv, register_file, register_random, register_prefix_env for details.