miniconf

Trait TreeDeserialize

Source
pub trait TreeDeserialize<'de> {
    // Required method
    fn deserialize_by_key<K, D>(
        &mut self,
        keys: K,
        de: D,
    ) -> Result<usize, Error<D::Error>>
       where K: Keys,
             D: Deserializer<'de>;
}
Expand description

Deserialize a leaf node by its keys.

See also crate::json or crate::postcard for convenient wrappers using this trait.

§Derive macro

See crate::TreeDeserialize. The derive macro attributes are described in the TreeKey trait.

Required Methods§

Source

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Deserialize a leaf node by its keys.

use miniconf::{IntoKeys, Leaf, TreeDeserialize, TreeKey};
#[derive(Default, TreeKey, TreeDeserialize)]
struct S {
    foo: Leaf<u32>,
    bar: [Leaf<u16>; 2],
};
let mut s = S::default();
let mut de = serde_json::de::Deserializer::from_slice(b"7");
s.deserialize_by_key(["bar", "0"].into_keys(), &mut de)
    .unwrap();
de.end().unwrap();
assert_eq!(*s.bar[0], 7);
§Args
  • keys: A Keys identifying the node.
  • de: A Deserializer to deserialize the value.
§Returns

Node depth on success

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'de, T0: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0,)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>, T3: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2, T3)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>, T3: TreeDeserialize<'de>, T4: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2, T3, T4)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>, T3: TreeDeserialize<'de>, T4: TreeDeserialize<'de>, T5: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2, T3, T4, T5)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>, T3: TreeDeserialize<'de>, T4: TreeDeserialize<'de>, T5: TreeDeserialize<'de>, T6: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T0: TreeDeserialize<'de>, T1: TreeDeserialize<'de>, T2: TreeDeserialize<'de>, T3: TreeDeserialize<'de>, T4: TreeDeserialize<'de>, T5: TreeDeserialize<'de>, T6: TreeDeserialize<'de>, T7: TreeDeserialize<'de>> TreeDeserialize<'de> for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for &RefCell<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for Bound<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for Option<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for &mut T

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for Cell<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for RefCell<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for Range<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for RangeFrom<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>> TreeDeserialize<'de> for RangeTo<T>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>, E: TreeDeserialize<'de>> TreeDeserialize<'de> for Result<T, E>

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Source§

impl<'de, T: TreeDeserialize<'de>, const N: usize> TreeDeserialize<'de> for [T; N]

Source§

fn deserialize_by_key<K, D>( &mut self, keys: K, de: D, ) -> Result<usize, Error<D::Error>>
where K: Keys, D: Deserializer<'de>,

Implementors§

Source§

impl<'de, T: TryFrom<&'de str>> TreeDeserialize<'de> for StrLeaf<T>

Source§

impl<'de, T: Deserialize<'de>> TreeDeserialize<'de> for Leaf<T>

Source§

impl<'de, T: ?Sized> TreeDeserialize<'de> for Deny<T>