oxidite-config
Configuration management for the Oxidite web framework.
Overview
oxidite-config provides flexible configuration management for Oxidite applications. It supports multiple configuration sources including environment variables, configuration files, and command-line arguments. The crate offers type-safe configuration loading with automatic deserialization from various formats.
Installation
Add this to your Cargo.toml:
[]
= "2.0"
Features
- Multiple Configuration Sources: Load configuration from environment variables, JSON, TOML, YAML files
- Hierarchical Configuration: Merge multiple configuration sources with precedence
- Type-Safe Deserialization: Automatic conversion to strongly-typed configuration structs
- Environment Variable Support: Easy mapping of environment variables to configuration values
- Hot Reload: Configuration reloading without application restart
- Validation: Built-in configuration validation and error reporting
Usage
Basic Configuration Loading
use ;
async
Configuration with Defaults
use ;
async
Environment Variable Configuration
use Config;
// Define environment variable mappings
set_var;
set_var;
set_var;
let config = from_env
.prefix // Use MYAPP_DATABASE_URL, MYAPP_PORT, etc.
.separator
.build?;
let database_url: String = config.get?;
let port: u16 = config.get?;
let debug: bool = config.get?;
Configuration Formats
The crate supports multiple configuration formats:
- JSON: Standard JSON configuration files
- TOML: Human-readable TOML format
- YAML: YAML configuration with complex nesting
- Environment Variables: Direct environment variable mapping
- Inline Configuration: Programmatic configuration definition
Advanced Features
Configuration Validation
use ;
let config = builder
.add_source
.validator
.build?;
Dynamic Configuration Reloading
use Config;
// Enable hot reloading
let config = builder
.enable_hot_reload
.add_source
.build?;
// Configuration will automatically reload when the file changes
let updated_value = config.?;
License
MIT