Expand description
§Distributed Config
distributed-config
is a robust configuration management library for Rust applications
running in distributed environments. It provides a unified interface for loading,
accessing, and synchronizing configuration across multiple nodes with support for
dynamic updates, validation, and various backend stores.
§Features
- Hierarchical Configuration: Organize configuration in a tree structure
- Multiple Sources: Load from files, environment variables, and remote sources
- Dynamic Updates: Real-time configuration changes with notifications
- Schema Validation: Strong typing and validation support
- Distributed Sync: Synchronize configuration across multiple nodes
- Feature Flags: Built-in feature flag management
- Versioning: Configuration history and rollback support
§Quick Start
use distributed_config::{ConfigManager, sources::FileSource};
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
struct AppConfig {
host: String,
port: u16,
debug: bool,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut config = ConfigManager::new();
// Add a file source
let file_source = FileSource::new().add_file("config.yaml", None);
config.add_source(file_source, 10);
// Initialize and load configuration
config.initialize().await?;
// Access typed configuration
let app_config = config.get::<AppConfig>("app").await?;
println!("Server running on {}:{}", app_config.host, app_config.port);
Ok(())
}
Re-exports§
pub use error::ConfigError;
pub use error::Result;
pub use manager::ConfigManager;
pub use sources::ConfigSource;
pub use sources::EnvSource;
pub use sources::FileSource;
pub use validation::SchemaValidator;
pub use value::ConfigValue;
pub use watcher::ConfigChange;
pub use watcher::ConfigWatcher;
Modules§
- error
- Error types for the distributed-config library
- manager
- Core configuration manager implementation
- sources
- Configuration sources for loading configuration from various locations
- validation
- Configuration validation using JSON Schema
- value
- Configuration value types and conversions
- watcher
- Configuration change watching and notification system
Functions§
- init_
tracing - Initialize tracing for the library
Type Aliases§
- Change
Notification - Type alias for configuration change notifications