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
28//! use qubit_config::Config;
29//! use qubit_config::source::{
30//! CompositeConfigSource, ConfigSource, TomlConfigSource,
31//! };
32//!
33//! // Load from TOML file
34//! let mut composite = CompositeConfigSource::new();
35//! let temp_dir = tempfile::tempdir().unwrap();
36//! let path = temp_dir.path().join("config.toml");
37//! std::fs::write(&path, "port = 8080\n").unwrap();
38//! composite.add(TomlConfigSource::from_file(path));
39//!
40//! let mut config = Config::new();
41//! config.merge_from_source(&composite).unwrap();
42//! assert_eq!(config.get::<i64>("port").unwrap(), 8080);
43//! ```
44//!
45//! # Author
46//!
47//! Haixing Hu
48
49mod composite_config_source;
50mod config_source;
51mod env_config_source;
52mod env_file_config_source;
53mod properties_config_source;
54mod toml_config_source;
55mod yaml_config_source;
56
57pub use composite_config_source::CompositeConfigSource;
58pub use config_source::ConfigSource;
59pub use env_config_source::EnvConfigSource;
60pub use env_file_config_source::EnvFileConfigSource;
61pub use properties_config_source::PropertiesConfigSource;
62pub use toml_config_source::TomlConfigSource;
63pub use yaml_config_source::YamlConfigSource;