Skip to main content

ConfigError

Enum ConfigError 

Source
#[non_exhaustive]
pub enum ConfigError { Io { path: PathBuf, source: Error, }, Parse { path: PathBuf, source: Box<dyn Error + Send + Sync>, }, UnknownFields { keys: Vec<String>, }, EnvVar { key: String, source: VarError, }, WatchFailed { source: Box<dyn Error + Send + Sync>, }, Poisoned, }
Expand description

Loading, parsing, strict-validation, and watching failures.

Documented failure modes are part of the API contract; every variant lists the condition that produces it. The enum is #[non_exhaustive], so matches require a wildcard arm.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Io

Reading a configuration file failed at the OS level — the file does not exist, lacks read permission, or the path is a directory. Produced by file layers and by watch when the watched file cannot be read back.

Fields

§path: PathBuf

The file that could not be read.

§source: Error

The underlying OS error.

§

Parse

One of:

  • a configuration file failed to parse in its format,
  • the file’s extension names a format whose feature is disabled (json, yaml),
  • the merged configuration did not deserialize into the target type.

path names where the failure happened. For a file parse failure it is the file involved. For a merge/deserialization mismatch it is the origin of the offending value: the file that supplied it, <env:VARIABLE> for a value supplied by an environment layer (the full, pre-strip variable name), or <overrides> for the in-process override layer — so a deployment’s bad environment variable is reported as itself, not as the file it happened to override. The path is empty when nothing more specific applies (no file layer contributed and the failing value’s layer could not be determined); Display renders the empty path as (merged).

Fields

§path: PathBuf

The file involved, or empty for a non-file deserialization mismatch (see above).

§source: Box<dyn Error + Send + Sync>

The parser or serde error.

§

UnknownFields

load_strict found top-level keys that no field of the target type consumed. Nested unknown keys are deliberately not reported (see load_strict’s documentation for the precise contract).

Fields

§keys: Vec<String>

The unconsumed top-level keys, sorted and deduplicated.

§

EnvVar

An environment variable matching the layer prefix carries a value that is not valid Unicode. Variables whose key is not valid Unicode can never match a str prefix and are skipped instead.

Fields

§key: String

The (valid-Unicode) variable name.

§source: VarError

The underlying variable error.

§

WatchFailed

File watching could not start — the platform watcher could not be created, the path could not be registered (typically: it does not exist), or the watcher thread could not be spawned. Produced only by watch (feature hot-reload).

Fields

§source: Box<dyn Error + Send + Sync>

The underlying watcher error.

§

Poisoned

The watcher’s shared error-slot lock was poisoned by a panic in the watcher thread. Treat as fatal: reload state is indeterminate and the watcher must be stopped and rebuilt.

Trait Implementations§

Source§

impl Debug for ConfigError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ConfigError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ConfigError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.