config-rs
Layered configuration system for Rust applications (with strong support for 12-factor applications).
- Set defaults
- Set explicit values (to programmatically override)
- Read from JSON and TOML files
- Read from environment
- Loosely typed — Configuration values may be read in any supported type, as long as there exists a reasonable conversion
Install
[]
= { = "https://github.com/mehcode/config-rs.git" }
Features
- json - Adds support for reading JSON files
- toml - Adds support for reading TOML files (included by default)
Usage
Configuration is gathered by building a Source
and then merging that source into the
current state of the configuration.
// Add environment variables that begin with RUST_
merge;
// Add 'Settings.json'
merge;
// Add 'Settings.$(RUST_ENV).json`
let name = format!;
merge;
Note that in the above example the calls to config::merge
could have
been re-ordered to influence the priority as each successive merge
is evaluated on top of the previous.
See the examples for more usage information.
Roadmap
All suggestions are welcome. Please make an issue.
License
config-rs is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.