pub struct ConfigBuilder { /* private fields */ }Expand description
Builds Settings from defaults, files, environment variables, and
programmatic overrides.
Precedence, lowest to highest: defaults, TOML file, environment (including
DATABASE_URL / ADDR aliases when Self::env_prefix is used),
Self::set. Overrides win regardless of call order; files and the
environment merge in the order they are added.
Nested environment keys use __ as the separator after the prefix is
stripped: SIDERITE_DATABASES__DEFAULT__URL maps to
databases.default.url.
Implementations§
Source§impl ConfigBuilder
impl ConfigBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Defaults only: app.name = "siderite", server.addr = "127.0.0.1:8000",
log.level = "info", cache.max_entries = 1024, empty databases.
Sourcepub fn file(self, path: impl AsRef<Path>) -> Self
pub fn file(self, path: impl AsRef<Path>) -> Self
Merge a TOML file that must exist at extraction time.
Sourcepub fn file_optional(self, path: impl AsRef<Path>) -> Self
pub fn file_optional(self, path: impl AsRef<Path>) -> Self
Merge a TOML file; a missing file is ignored.
Sourcepub fn env_prefix(self, prefix: &str) -> Self
pub fn env_prefix(self, prefix: &str) -> Self
Merge environment variables with prefix, nested on __.
Also maps the unprefixed aliases DATABASE_URL → databases.default.url
and ADDR → server.addr. Prefixed variables override those aliases.
Sourcepub fn set(self, key: &str, value: impl Serialize) -> Self
pub fn set(self, key: &str, value: impl Serialize) -> Self
Override a dotted key ("server.addr", "app.debug", …). Overrides
take precedence over every file and environment source, whenever they
were added; among overrides, later Self::set calls win.
Sourcepub fn extract<T: DeserializeOwned>(&self) -> Result<T, ConfigError>
pub fn extract<T: DeserializeOwned>(&self) -> Result<T, ConfigError>
Deserialize the merged configuration into T.
§Errors
Returns ConfigError::MissingFile if a required file is absent, or
ConfigError::Extract if the merged tree cannot be deserialized.
Extract messages never include secret values.
Sourcepub fn build(&self) -> Result<Settings, ConfigError>
pub fn build(&self) -> Result<Settings, ConfigError>
Sourcepub fn explain(&self) -> Result<Vec<ConfigEntry>, ConfigError>
pub fn explain(&self) -> Result<Vec<ConfigEntry>, ConfigError>
Every resolved value with the source that set it (a default, a
file, an environment variable or an override), redacted, sorted by
key. It reads the same merged sources as Self::build.
§Errors
ConfigError::MissingFile for a missing required file.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for ConfigBuilder
impl !UnwindSafe for ConfigBuilder
impl Freeze for ConfigBuilder
impl Send for ConfigBuilder
impl Sync for ConfigBuilder
impl Unpin for ConfigBuilder
impl UnsafeUnpin for ConfigBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);