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§
Sourcefn deserialize_by_key<D: Deserializer<'de>>(
    &mut self,
    keys: impl Keys,
    de: D,
) -> Result<(), SerdeError<D::Error>>
 
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: AKeysidentifying the node.de: ADeserializerto deserialize the value.
Sourcefn probe_by_key<D: Deserializer<'de>>(
    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>>
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: AKeysidentifying the node.de: ADeserializerto 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.