Trait miniconf::TreeDeserialize
source · pub trait TreeDeserialize<'de, const Y: usize = 1>: TreeKey<Y> {
// 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::JsonCoreSlash
for a convenient blanket implementation using this trait.
§Derive macro
crate::TreeDeserialize
derives TreeSerialize
for structs with named fields and tuple structs.
The field attributes are described in the TreeKey
trait.
Required Methods§
sourcefn deserialize_by_key<K, D>(
&mut self,
keys: K,
de: D
) -> Result<usize, Error<D::Error>>where
K: Keys,
D: Deserializer<'de>,
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::{TreeDeserialize, TreeKey};
#[derive(Default, TreeKey, TreeDeserialize)]
struct S {
foo: u32,
#[tree(depth=1)]
bar: [u16; 2],
};
let mut s = S::default();
let mut de = serde_json_core::de::Deserializer::new(b"7");
s.deserialize_by_key(["bar", "0"].into_iter(), &mut de).unwrap();
de.end().unwrap();
assert_eq!(s.bar[0], 7);
§Args
keys
: AnIterator
ofKey
s identifying the node.de
: ADeserializer
to deserialize the value.
§Returns
Node depth on success
Object Safety§
This trait is not object safe.