Crate distributed_config

Source
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§

ChangeNotification
Type alias for configuration change notifications