qubit_config/source/mod.rs
1/*******************************************************************************
2 *
3 * Copyright (c) 2025 - 2026.
4 * Haixing Hu, Qubit Co. Ltd.
5 *
6 * All rights reserved.
7 *
8 ******************************************************************************/
9//! # Configuration Source Module
10//!
11//! Provides various configuration source implementations for loading
12//! configuration from different sources such as files, environment variables,
13//! etc.
14//!
15//! # Supported Sources
16//!
17//! - [`PropertiesConfigSource`]: Loads configuration from Java `.properties`
18//! format files
19//! - [`TomlConfigSource`]: Loads configuration from TOML format files
20//! - [`YamlConfigSource`]: Loads configuration from YAML format files
21//! - [`EnvFileConfigSource`]: Loads configuration from `.env` format files
22//! - [`EnvConfigSource`]: Loads configuration from system environment variables
23//! - [`CompositeConfigSource`]: Merges configuration from multiple sources
24//!
25//! # Examples
26//!
27//! ```rust,ignore
28//! use qubit_config::Config;
29//! use qubit_config::source::{
30//! CompositeConfigSource, ConfigSource, EnvConfigSource, TomlConfigSource,
31//! };
32//!
33//! // Load from TOML file with env override
34//! let mut composite = CompositeConfigSource::new();
35//! composite.add(TomlConfigSource::from_file("config.toml"));
36//! composite.add(EnvConfigSource::with_prefix("APP_"));
37//!
38//! let mut config = Config::new();
39//! config.merge_from_source(&composite).unwrap();
40//! ```
41//!
42//! # Author
43//!
44//! Haixing Hu
45
46mod composite_config_source;
47mod config_source;
48mod env_config_source;
49mod env_file_config_source;
50mod properties_config_source;
51mod toml_config_source;
52mod yaml_config_source;
53
54pub use composite_config_source::CompositeConfigSource;
55pub use config_source::ConfigSource;
56pub use env_config_source::EnvConfigSource;
57pub use env_file_config_source::EnvFileConfigSource;
58pub use properties_config_source::PropertiesConfigSource;
59pub use toml_config_source::TomlConfigSource;
60pub use yaml_config_source::YamlConfigSource;