Expand description
Configuration management for Armature framework
Provides flexible configuration loading from multiple sources including environment variables, JSON, TOML, and programmatic values.
§Examples
§Basic Usage
use armature_config::ConfigManager;
let manager = ConfigManager::new();
// Set configuration values
manager.set("app.name", "MyApp")?;
manager.set("app.port", 3000i64)?;
// Get configuration values
let name: String = manager.get("app.name")?;
let port: i64 = manager.get("app.port")?;
assert_eq!(name, "MyApp");
assert_eq!(port, 3000);§Loading from Environment Variables
use armature_config::EnvLoader;
let loader = EnvLoader::new(None);
// Load all environment variables
let vars = loader.load()?;
// Or load a specific variable
match loader.load_var("HOME") {
Ok(value) => println!("Home directory: {}", value),
Err(_) => println!("HOME not set"),
}§Type Conversions
use armature_config::ConfigManager;
let manager = ConfigManager::new();
manager.set("debug", true)?;
manager.set("timeout", 30i64)?;
manager.set("rate", 0.5)?;
// Get with automatic type conversion
let debug = manager.get_bool("debug")?;
let timeout = manager.get_int("timeout")?;
let rate = manager.get_float("rate")?;
assert!(debug);
assert_eq!(timeout, 30);
assert_eq!(rate, 0.5);§Nested Configuration
use armature_config::ConfigManager;
let manager = ConfigManager::new();
// Set nested configuration using dot notation
manager.set("database.host", "localhost")?;
manager.set("database.port", 5432i64)?;
manager.set("database.username", "admin")?;
manager.set("cache.enabled", true)?;
manager.set("cache.ttl", 3600i64)?;
// Retrieve nested values
let db_host: String = manager.get("database.host")?;
let db_port: i64 = manager.get("database.port")?;
let cache_enabled: bool = manager.get("cache.enabled")?;
assert_eq!(db_host, "localhost");
assert_eq!(db_port, 5432);
assert!(cache_enabled);§Default Values
use armature_config::ConfigManager;
let manager = ConfigManager::new();
// Set a value
manager.set("max_connections", 100i64)?;
// Get existing value
let max_conn = manager.get_or("max_connections", 50i64);
assert_eq!(max_conn, 100);
// Get non-existent value (returns default)
let min_conn = manager.get_or("min_connections", 10i64);
assert_eq!(min_conn, 10);
// Check if key exists
assert!(manager.has("max_connections"));
assert!(!manager.has("min_connections"));Re-exports§
pub use config_service::ConfigService;pub use env::EnvLoader;pub use error::ConfigError;pub use error::Result;pub use loader::ConfigLoader;pub use loader::FileFormat;pub use validation::ConfigValidator;pub use validation::Validate;
Modules§
- config_
service - env
- error
- loader
- prelude
- Prelude for common imports.
- validation
Structs§
- Config
Manager - Main configuration manager