[][src]Struct figment::value::magic::Tagged

pub struct Tagged<T> { /* fields omitted */ }
This is supported on crate feature magic only.

A wrapper around any value of type T and the metadata Id of the provider that sourced the value.

use figment::{Figment, value::magic::Tagged, Jail};
use figment::providers::{Format, Toml};

#[derive(Debug, PartialEq, serde::Deserialize)]
struct Config {
    number: Tagged<usize>,
}

Jail::expect_with(|jail| {
    jail.create_file("Config.toml", r#"number = 10"#)?;
    let figment = Figment::from(Toml::file("Config.toml"));
    let c: Config = figment.extract()?;
    assert_eq!(*c.number, 10);

    let metadata = c.number.metadata_id()
        .and_then(|id| figment.get_metadata(id))
        .expect("number has metadata id, figment has metadata");

    assert_eq!(metadata.name, "TOML file");
    Ok(())
});

Implementations

impl<T> Tagged<T>[src]

pub fn metadata_id(&self) -> Option<Id>[src]

This is supported on crate feature magic only.

Returns the ID of the metadata of the provider that sourced this value if it is known. As long self was extracted from a Figment, the returned value is expected to be Some.

The metadata can be retrieved by calling Figment::get_metadata() on the Figment self was extracted from.

Example

use figment::{Figment, value::magic::Tagged};

let figment = Figment::from(("key", "value"));
let tagged = figment.extract_inner::<Tagged<String>>("key").unwrap();

assert!(tagged.metadata_id().is_some());
assert!(figment.get_metadata(tagged.metadata_id().unwrap()).is_some());

pub fn into_inner(self) -> T[src]

This is supported on crate feature magic only.

Consumes self and returns the inner value.

Example

use figment::{Figment, value::magic::Tagged};

let tagged = Figment::from(("key", "value"))
    .extract_inner::<Tagged<String>>("key")
    .unwrap();

let value = tagged.into_inner();
assert_eq!(value, "value");

Trait Implementations

impl<T: Clone> Clone for Tagged<T>[src]

impl<T: Debug> Debug for Tagged<T>[src]

impl<T> Deref for Tagged<T>[src]

type Target = T

The resulting type after dereferencing.

impl<'de, T> Deserialize<'de> for Tagged<T> where
    T: Deserialize<'de>, 
[src]

impl<T> From<T> for Tagged<T>[src]

impl<T: for<'de> Deserialize<'de>> Magic for Tagged<T>[src]

impl<T: PartialEq> PartialEq<Tagged<T>> for Tagged<T>[src]

impl<T> Serialize for Tagged<T> where
    T: Serialize
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Tagged<T> where
    T: RefUnwindSafe

impl<T> Send for Tagged<T> where
    T: Send

impl<T> Sync for Tagged<T> where
    T: Sync

impl<T> Unpin for Tagged<T> where
    T: Unpin

impl<T> UnwindSafe for Tagged<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<!> for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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