Env

Struct Env 

Source
pub struct Env { /* private fields */ }
Expand description

Current context of environment variable parsing.

Env keeps track of nesting by storing the name of the “current” variable. A type’s parser may choose to read the value of the current variable using value, or use it to parse its fields using nest and field.

Implementations§

Source§

impl Env

Source

pub fn value(&self) -> Result<OsString, Error>

Read the value of the current variable.

§Errors

Returns Error::Missing if the current variable is missing.

§Examples
enum Color {
    Orange,
    Blue,
}

impl Tenvy for Color {
   fn from_env(env: &Env) -> Result<Self, Error> {
      #[derive(Debug, thiserror::Error)]
      #[error("expected `orange` or `blue`")]
      struct InvalidColor;

      match env.value()?.to_str() {
          Some("orange") => Ok(Self::Orange),
          Some("blue") => Ok(Self::Blue),
          _ => Err(Error::invalid_value(env, InvalidColor)),
      }
   }
}
Source

pub fn nest<K: AsRef<OsStr>>(&self, field: K) -> Self

Construct a new context for a field, i.e. append field to the current variable name. The separator _ is added automatically.

Source

pub fn field<K: AsRef<OsStr>, T: Tenvy>(&self, field: K) -> Result<T, Error>

Parse a value in a nested context.

§Examples
impl Tenvy for Database {
    fn from_env(env: &Env) -> Result<Self, Error> {
        Ok(Self {
            url: env.field("URL")?,
        })
    }
}

Trait Implementations§

Source§

impl Debug for Env

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Env

§

impl RefUnwindSafe for Env

§

impl Send for Env

§

impl Sync for Env

§

impl Unpin for Env

§

impl UnwindSafe for Env

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

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.