Skip to main content

siderite_config/
lib.rs

1//! Layered configuration for siderite applications.
2//!
3//! Precedence, lowest to highest: compiled defaults, an optional TOML file,
4//! environment variables, programmatic [`ConfigBuilder::set`] overrides.
5//!
6//! ```
7//! use siderite_config::ConfigBuilder;
8//!
9//! let settings = ConfigBuilder::new()
10//!     .set("app.name", "demo")
11//!     .build()
12//!     .unwrap();
13//! assert_eq!(settings.app.name, "demo");
14//! assert_eq!(settings.server.addr, "127.0.0.1:8000");
15//! ```
16#![forbid(unsafe_code)]
17
18mod builder;
19mod error;
20mod explain;
21pub mod redact;
22mod secret;
23mod settings;
24mod tracing_init;
25
26pub use builder::{ConfigBuilder, DEFAULT_CONFIG_FILE, DEFAULT_ENV_PREFIX, load};
27pub use error::{ConfigError, is_secret_key};
28pub use explain::{ConfigEntry, ConfigSource, SourceKind};
29pub use secret::Secret;
30pub use settings::{
31    AppSettings, CacheSettings, DEFAULT_APP_NAME, DEFAULT_CACHE_MAX_ENTRIES, DEFAULT_LOG_LEVEL,
32    DEFAULT_SERVER_ADDR, DatabaseSettings, LogSettings, ServerSettings, Settings,
33};
34pub use tracing_init::init_tracing;
35
36#[cfg(test)]
37mod tests;
38#[cfg(test)]
39mod tests_explain;