Skip to main content

Deserializer

Struct Deserializer 

Source
pub struct Deserializer<'a> { /* private fields */ }
Expand description

Deserializes environment variables.

The variables are read when the deserializer is created. Most of the time the from_env and from_vars functions (or the methods of the same name on DeserializerConfig) are all that is needed. The deserializer is useful to configure the driver, for instance to add layers, or to update a value (see update):

use deser::de::Deserializer as _;
use deser_env::Deserializer;

#[derive(Debug, deser::Deserialize)]
struct Config {
    host: String,
    port: u16,
}

let mut config = Config { host: "localhost".into(), port: 80 };
Deserializer::from_vars("APP_", [("APP_PORT", "8080")])
    .update(&mut config)
    .unwrap();
assert_eq!(config.host, "localhost");
assert_eq!(config.port, 8080);

Implementations§

Source§

impl Deserializer<'static>

Source

pub fn from_env(prefix: &str) -> Deserializer<'static>

Creates a deserializer for the environment variables with a prefix.

Source

pub fn from_env_with_config( prefix: &str, config: DeserializerConfig, ) -> Deserializer<'static>

Creates a deserializer for the environment variables with a prefix and the given configuration.

Variables with names that are not valid unicode are skipped unless they start with the prefix, which is an error. Values that are not valid unicode are passed on as bytes on Unix and are an error on other platforms.

Source§

impl<'a> Deserializer<'a>

Source

pub fn from_vars<I, K, V>(prefix: &str, vars: I) -> Deserializer<'a>
where I: IntoIterator<Item = (K, V)>, K: Into<Cow<'a, str>>, V: Into<Cow<'a, str>>,

Creates a deserializer for the given variables with a prefix.

The variables are name-value pairs, for instance from std::env::vars or a file. Values that are given borrowed are passed on borrowed.

Source

pub fn from_vars_with_config<I, K, V>( prefix: &str, vars: I, config: DeserializerConfig, ) -> Deserializer<'a>
where I: IntoIterator<Item = (K, V)>, K: Into<Cow<'a, str>>, V: Into<Cow<'a, str>>,

Creates a deserializer for the given variables with a prefix and the given configuration.

Source

pub fn config(&self) -> &DeserializerConfig

Returns the configuration.

Source

pub fn deserialize<T: Deserialize<'a>>(&mut self) -> Result<T, Error>

Deserializes the variables.

To configure the deserialization (for instance to add layers) use deserialize_with.

Source

pub fn deserialize_with<T, F>(&mut self, setup: F) -> Result<T, Error>
where T: Deserialize<'a>, F: FnOnce(&mut DeserializeDriver<'_, 'a>),

Deserializes the variables with a configured driver.

The callback is invoked with the driver before the value is deserialized, for instance to add Layers.

Source

pub fn drive( &mut self, driver: &mut DeserializeDriver<'_, 'a>, ) -> Result<(), Error>

Feeds the events of the variables into the given driver.

The variables are a map (see the crate documentation). All names are checked before the first event is emitted. The name of the variable an event comes from is attached to it and to the errors it causes (see EnvVar). Values that are given borrowed are passed on borrowed.

The context of the configuration is given to the driver (values that the context of the driver has take precedence, see DeserializeDriver::set_default_context).

Trait Implementations§

Source§

impl<'a> Deserializer<'a> for Deserializer<'a>

Source§

fn drive(&mut self, driver: &mut DeserializeDriver<'_, 'a>) -> Result<(), Error>

Parses the input and feeds the events of a value into the driver.
Source§

fn deserialize<T>(&mut self) -> Result<T, Error>
where T: Deserialize<'de>, Self: Sized,

Deserializes a value.
Source§

fn deserialize_with<T, F>(&mut self, setup: F) -> Result<T, Error>
where T: Deserialize<'de>, F: FnOnce(&mut DeserializeDriver<'_, 'de>), Self: Sized,

Deserializes a value with a configured driver. Read more
Source§

fn update<T>(&mut self, value: &mut T) -> Result<(), Error>
where T: Deserialize<'de>, Self: Sized,

Updates an existing value with the next value. Read more
Source§

fn update_with<T, F>(&mut self, value: &mut T, setup: F) -> Result<(), Error>
where T: Deserialize<'de>, F: FnOnce(&mut DeserializeDriver<'_, 'de>), Self: Sized,

Updates an existing value with the next value after setting up the driver. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Deserializer<'a>

§

impl<'a> !UnwindSafe for Deserializer<'a>

§

impl<'a> Freeze for Deserializer<'a>

§

impl<'a> Send for Deserializer<'a>

§

impl<'a> Sync for Deserializer<'a>

§

impl<'a> Unpin for Deserializer<'a>

§

impl<'a> UnsafeUnpin for Deserializer<'a>

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 = !

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.