Struct config::Environment

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

An environment source collects a dictionary of environment variables values into a hierarchical config Value type. We have to be aware how the config tree is created from the environment dictionary, therefore we are mindful about prefixes for the environment keys, level separators, encoding form (kebab, snake case) etc.

Implementations§

source§

impl Environment

source

pub fn new() -> Self

👎Deprecated since 0.12.0: please use ‘Environment::default’ instead
source

pub fn with_prefix(s: &str) -> Self

Optional prefix that will limit access to the environment to only keys that begin with the defined prefix.

A prefix with a separator of _ is tested to be present on each key before its considered to be part of the source environment.

For example, the key CONFIG_DEBUG would become DEBUG with a prefix of config.

source

pub fn prefix(self, s: &str) -> Self

source

pub fn with_convert_case(tt: Case) -> Self

source

pub fn convert_case(self, tt: Case) -> Self

source

pub fn prefix_separator(self, s: &str) -> Self

Optional character sequence that separates the prefix from the rest of the key

source

pub fn separator(self, s: &str) -> Self

Optional character sequence that separates each key segment in an environment key pattern. Consider a nested configuration such as redis.password, a separator of _ would allow an environment key of REDIS_PASSWORD to match.

source

pub fn list_separator(self, s: &str) -> Self

When set and try_parsing is true, then all environment variables will be parsed as Vec<String> instead of String. See with_list_parse_key when you want to use Vec<String> in combination with String.

source

pub fn with_list_parse_key(self, key: &str) -> Self

Add a key which should be parsed as a list when collecting Values from the environment. Once list_separator is set, the type for string is Vec<String>. To switch the default type back to type Strings you need to provide the keys which should be Vec<String> using this function.

source

pub fn ignore_empty(self, ignore: bool) -> Self

Ignore empty env values (treat as unset).

source

pub fn try_parsing(self, try_parsing: bool) -> Self

Note: enabling try_parsing can reduce performance it will try and parse each environment variable 3 times (bool, i64, f64)

source

pub fn keep_prefix(self, keep: bool) -> Self

source

pub fn source(self, source: Option<Map<String, String>>) -> Self

Alternate source for the environment. This can be used when you want to test your own code using this source, without the need to change the actual system environment variables.

§Example
#[test]
fn test_config() -> Result<(), config::ConfigError> {
  #[derive(Clone, Debug, Deserialize)]
  struct MyConfig {
    pub my_string: String,
  }

  let source = Environment::default()
    .source(Some({
      let mut env = HashMap::new();
      env.insert("MY_STRING".into(), "my-value".into());
      env
  }));

  let config: MyConfig = Config::builder()
    .add_source(source)
    .build()?
    .try_into()?;
  assert_eq!(config.my_string, "my-value");

  Ok(())
}

Trait Implementations§

source§

impl Clone for Environment

source§

fn clone(&self) -> Environment

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 Environment

source§

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

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

impl Default for Environment

source§

fn default() -> Environment

Returns the “default value” for a type. Read more
source§

impl Source for Environment

source§

fn clone_into_box(&self) -> Box<dyn Source + Send + Sync>

source§

fn collect(&self) -> Result<Map<String, Value>, ConfigError>

Collect all configuration properties available from this source and return a Map.
source§

fn collect_to(&self, cache: &mut Value) -> Result<(), ConfigError>

Collects all configuration properties to a provided cache.

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