confine-rs
This crate provides both a macro and a builder API for loading configuration files.
I would recommend using the macro for most use cases, as it provides a more concise way of loading configuration files.
Using either one, you will be provided with a try_load function for your configuration struct.
This will instantiate your struct with the configuration values from the following sources in order of precedence:
config/application.tomlconfig/application-{environment}.toml- Environment variables
The environment is determined by the CONFINE_ENV environment variable, which must be set in order to load the environment-specific configuration file.
You can configure most of these settings, but the general structure is always enforced. Things you can configure include:
- The path to the configuration files (default:
config) - The prefix of the configuration files (default:
application) - The environment variable that determines the environment (default:
CONFINE_ENV)
Usage
Default configuration
Macro
use confine;
Builder
use ConfineConfigBuilder;
use Deserialize;
Custom configuration
Macro
use confine;
Builder
use ConfineConfigBuilder;
use Deserialize;
Motivation
I found myself writing the same boilerplate code for loading configuration files in Rust over and over again.
Also, while config-rs is a great library, it allows for a lot of flexibility in how exactly you handle configuration.
Especially when working on multiple projects, I prefer to have a consistent way of storing and loading configuration files.
This crate aims to provide an easy-to-use macro for loading configuration files with sensible defaults.