Axum Config
Configuration management for Axum applications. Load configuration from TOML files with environment variable support.
Features
- Load configuration from TOML files
- Environment variable interpolation (
${VAR}and${VAR:default}) - Integration with Axum as extractor
- 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 ;
use ;
use Arc;
use TcpListener;
async
// If your handlers are separated into another modules,
// it's recommended to rename `ExtractConfig` to `Config` for clarity.
// use axum_config::ExtractConfig as Config;
async
Configuration Loading
Use Config::builder() to specify configuration files. Files can be optional (loaded if present) or required (must exist).
let config = builder
.add_file // optional
.add_required_file // required
.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 |
Extractor Methods
| Extractor | Description | Feature |
|---|---|---|
ExtractConfig<T> |
Extracts config section without validation | - |
ExtractOptionalConfig<T> |
Extracts config section as Option<T> |
- |
ExtractValidatedConfig<T> |
Extracts and validates config section | validation |
Note: Enable the
validationfeature in yourCargo.tomlforExtractValidatedConfig:axum-config = { version = "*", features = ["validation"] }