Trait TreeDeserialize

Source
pub trait TreeDeserialize<'de>: TreeSchema {
    // Required methods
    fn deserialize_by_key<D: Deserializer<'de>>(
        &mut self,
        keys: impl Keys,
        de: D,
    ) -> Result<(), SerdeError<D::Error>>;
    fn probe_by_key<D: Deserializer<'de>>(
        keys: impl Keys,
        de: D,
    ) -> Result<(), SerdeError<D::Error>>;
}
Expand description

Deserialize a leaf node by its keys.

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

§Derive macro

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

Required Methods§

Source

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

Deserialize a leaf node by its keys.

use miniconf::{IntoKeys, TreeDeserialize, TreeSchema};
#[derive(Default, TreeSchema, TreeDeserialize)]
struct S {
    foo: u32,
    bar: [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.
Source

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Blind deserialize a leaf node by its keys.

This method should succeed at least in those cases where deserialize_by_key() succeeds.

use miniconf::{IntoKeys, TreeDeserialize, TreeSchema};
#[derive(Default, TreeSchema, TreeDeserialize)]
struct S {
    foo: u32,
    bar: [u16; 2],
};
let mut de = serde_json::de::Deserializer::from_slice(b"7");
S::probe_by_key(["bar", "0"].into_keys(), &mut de)
    .unwrap();
de.end().unwrap();
§Args
  • keys: A Keys identifying the node.
  • de: A Deserializer to deserialize the value.

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<'a, 'de: 'a> TreeDeserialize<'de> for &'a str

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'a, 'de: 'a> TreeDeserialize<'de> for &'a [u8]

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for SocketAddr

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for bool

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for char

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for f32

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for f64

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for i8

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for i16

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for i32

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for i64

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for i128

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for isize

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for u8

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for u16

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for u32

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for u64

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for u128

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for ()

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for usize

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for SocketAddrV4

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for SocketAddrV6

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de> TreeDeserialize<'de> for Duration

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

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<D: Deserializer<'de>>( &mut self, keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

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<D: Deserializer<'de>>( &mut self, keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

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<D: Deserializer<'de>>( &mut self, keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

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<D: Deserializer<'de>>( &mut self, keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

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<D: Deserializer<'de>>( &mut self, keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de, T: Deserialize<'de>, const N: usize> TreeDeserialize<'de> for Vec<T, N>

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

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

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Source§

impl<'de, const N: usize> TreeDeserialize<'de> for String<N>

Source§

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

Source§

fn probe_by_key<D: Deserializer<'de>>( keys: impl Keys, de: D, ) -> Result<(), SerdeError<D::Error>>

Implementors§

Source§

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