Struct smart_config::ConfigSchema

source ·
pub struct ConfigSchema { /* private fields */ }
Expand description

Schema for configuration. Can contain multiple configs bound to different paths.

Implementations§

source§

impl ConfigSchema

source

pub fn new(metadata: &'static ConfigMetadata, prefix: &'static str) -> Self

Creates a schema consisting of a single configuration at the specified prefix.

source

pub fn coerce_serde_enums(&mut self, coerce: bool) -> &mut Self

Switches coercing for serde-like enums. Coercion will add path aliases for all tagged params in enum configs added to the schema afterward (or until coerce_serde_enums(false) is called). Coercion will apply to nested enum configs as well.

For example, if a config param named param corresponds to the tag SomeTag, then alias .some_tag.param (snake_cased tag + param name) will be added for the param. Tag aliases and param aliases will result in additional path aliases, as expected. For example, if param has alias alias and the tag has alias AliasTag, then the param will have .alias_tag.param, .alias_tag.alias and .some_tag.alias aliases.

source

pub fn iter(&self) -> impl Iterator<Item = ConfigRef<'_>> + '_

Iterates over all configs contained in this schema. A unique key for a config is its type + location; i.e., multiple returned refs may have the same config type xor same location (never both).

source

pub fn locate( &self, metadata: &'static ConfigMetadata, ) -> impl Iterator<Item = &str> + '_

Lists all prefixes for the specified config. This does not include aliases.

source

pub fn get<'s>( &'s self, metadata: &'static ConfigMetadata, prefix: &'s str, ) -> Option<ConfigRef<'s>>

Gets a reference to a config by ist unique key (metadata + canonical prefix).

source

pub fn get_mut( &mut self, metadata: &'static ConfigMetadata, prefix: &str, ) -> Option<ConfigMut<'_>>

Gets a reference to a config by ist unique key (metadata + canonical prefix).

source

pub fn single(&self, metadata: &'static ConfigMetadata) -> Result<ConfigRef<'_>>

Returns a single reference to the specified config.

§Errors

Returns an error if the configuration is not registered or has more than one mount point.

source

pub fn single_mut( &mut self, metadata: &'static ConfigMetadata, ) -> Result<ConfigMut<'_>>

Returns a single mutable reference to the specified config.

§Errors

Returns an error if the configuration is not registered or has more than one mount point.

source

pub fn insert( &mut self, metadata: &'static ConfigMetadata, prefix: &'static str, ) -> Result<ConfigMut<'_>>

Inserts a new configuration type at the specified place.

§Errors

Returns an error if adding a config leads to violations of fundamental invariants:

  • If a parameter in the new config (taking aliases into account, and params in nested / flattened configs) is mounted at the location of an existing config.
  • Vice versa, if a config or nested config is mounted at the location of an existing param.
  • If a parameter is mounted at the location of a parameter with disjoint expected types.

Trait Implementations§

source§

impl Clone for ConfigSchema

source§

fn clone(&self) -> ConfigSchema

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ConfigSchema

source§

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

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

impl Default for ConfigSchema

source§

fn default() -> ConfigSchema

Returns the “default value” for a type. 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> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more