ThisConfig - Config Loader
Configuration management for Rust applications. Load configuration from TOML files with support for environment variable interpolation and multi-file merging.
Features
- Load configuration from TOML files
- Multi file support with merging and overriding
- Environment variable interpolation (
${VAR}and${VAR:default}) - File loading directly on config files (
key = "file:path")
Installation
Usage
1. Define configuration structure
use Deserialize;
use config;
2. Create configuration file
config/config.toml:
[]
= "${DB_HOST:localhost}"
= 5432
= "${DB_USER:admin}"
3. Use in your application
use Config;
async
```
## Configuration Loading
Use `builder` to specify configuration files. Files can be optional or required . You can also add TOML strings directly.
```rust
let config = builder
.add_file // optional
.add_required_file // required
.add_toml_str // in-memory TOML
.build?;
Files are merged in order, with later files overriding earlier ones.
Environment variables
Supports interpolation in TOML with default values:
[]
= "${HOST:0.0.0.0}" # Uses HOST or defaults to "0.0.0.0"
= "${PORT}" # Requires PORT to be defined
= "${DATABASE_URL}/my_database" # Requires DATABASE_URL and appends "/my_database"
Config Methods
| Method | Description |
|---|---|
get<T>() |
Returns the configuration section as Option<T> |
get_or_default<T>() |
Returns the config section or default if missing |
expect<T>() |
Returns the config section or panics if missing |
get_validated<T>() |
Returns the config section or validation errors if invalid |
Note: Enable the
validationfeature in yourCargo.tomlforget_validated<T>()support. This requires your config structs to implementValidatefrom thevalidatorcrate.
Examples
See the examples directory for complete working examples of using thisconfig.