Trait miniconf::TreeAny

source ·
pub trait TreeAny<const Y: usize = 1>: TreeKey<Y> {
    // Required methods
    fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
       where K: Keys;
    fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
       where K: Keys;

    // Provided methods
    fn ref_by_key<T: Any, K: IntoKeys>(&self, keys: K) -> Result<&T, Traversal> { ... }
    fn mut_by_key<T: Any, K: IntoKeys>(
        &mut self,
        keys: K
    ) -> Result<&mut T, Traversal> { ... }
}
Expand description

Access any node by keys.

This uses the dyn Any trait object.

use core::any::Any;
use miniconf::{TreeAny, TreeKey, JsonPath};
#[derive(TreeKey, TreeAny, Default)]
struct S {
    foo: u32,
    #[tree(depth=1)]
    bar: [u16; 2],
};
let mut s = S::default();

for (key, depth) in S::iter_indices() {
    let a = s.ref_any_by_key(key[..depth].iter().copied()).unwrap();
    assert!([0u32.type_id(), 0u16.type_id()].contains(&(&*a).type_id()));
}

let val: &mut u16 = s.mut_by_key(JsonPath::from(".bar[1]")).unwrap();
*val = 3;
assert_eq!(s.bar[1], 3);

let val: &u16 = s.ref_by_key(JsonPath::from(".bar[1]")).unwrap();
assert_eq!(*val, 3);

Required Methods§

source

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

Obtain a reference to a dyn Any trait object for a leaf node.

source

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

Obtain a mutable reference to a dyn Any trait object for a leaf node.

Provided Methods§

source

fn ref_by_key<T: Any, K: IntoKeys>(&self, keys: K) -> Result<&T, Traversal>

Obtain a reference to a leaf of known type by key.

source

fn mut_by_key<T: Any, K: IntoKeys>( &mut self, keys: K ) -> Result<&mut T, Traversal>

Obtain a mutable reference to a leaf of known type by key.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T: Any> TreeAny for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: Any, const N: usize> TreeAny for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<2> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<3> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<4> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<5> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<6> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<7> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<8> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<9> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<10> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<11> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<12> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<13> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<14> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<15> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>> TreeAny<16> for Option<T>

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<2> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<3> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<4> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<5> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<6> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<7> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<8> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<9> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<10> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<11> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<12> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<13> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<14> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<15> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

source§

impl<T: TreeAny<{ _ }>, const N: usize> TreeAny<16> for [T; N]

source§

fn ref_any_by_key<K>(&self, keys: K) -> Result<&dyn Any, Traversal>
where K: Keys,

source§

fn mut_any_by_key<K>(&mut self, keys: K) -> Result<&mut dyn Any, Traversal>
where K: Keys,

Implementors§