1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Configuration module for flexible and extensible configuration management.
//!
//! This module provides a generic configuration framework that can be used throughout
//! the crate. It supports multiple configuration sources (files, environment variables,
//! defaults), various formats (TOML, JSON, YAML), and hierarchical configuration with
//! proper merging semantics.
//!
//! # Architecture
//!
//! The configuration system is built around these core concepts:
//!
//! - **Configurable**: Trait for types that can be configured
//! - **ConfigProvider**: Trait for configuration sources
//! - **ConfigManager**: Generic manager for any Configurable type
//! - **ConfigSource**: Different sources of configuration data
//! - **StandardConfig**: The standard configuration for this crate
//!
//! # Example
//!
//! ```ignore
//! use sublime_standard_tools::config::{ConfigManager, StandardConfig};
//! use sublime_standard_tools::filesystem::FileSystemManager;
//!
//! async fn load_config() -> Result<StandardConfig, Box<dyn std::error::Error>> {
//! let fs = FileSystemManager::new();
//! let manager = ConfigManager::<StandardConfig>::builder()
//! .with_defaults()
//! .with_file("~/.config/sublime/config.toml")
//! .with_file(".sublime.toml")
//! .with_env_prefix("SUBLIME")
//! .build(fs)?;
//!
//! let config = manager.load().await?;
//! Ok(config)
//! }
//! ```
// Re-export main types for convenience
pub use crate;
pub use ConfigFormat;
pub use ;
pub use ;
pub use StandardConfig;
pub use ;
pub use ConfigValue;
// Re-export commonly used types from submodules
pub use ;