oasis_core_runtime/storage/mkvs/tree/
macros.rs

1#[macro_export]
2macro_rules! classify_noderef {
3    (? $e:expr) => {{
4        let kind = match $e {
5            None => NodeKind::None,
6            Some(ref node) => classify_noderef!(node),
7        };
8        kind
9    }};
10    ($e:expr) => {{
11        // Ensure references don't leak outside this macro.
12        let kind = match *$e.borrow() {
13            NodeBox::Internal(_) => NodeKind::Internal,
14            NodeBox::Leaf(_) => NodeKind::Leaf,
15        };
16        kind
17    }};
18}
19
20#[macro_export]
21macro_rules! noderef_as {
22    ($ref:expr, $type:ident) => {
23        match *$ref.borrow() {
24            NodeBox::$type(ref deref) => deref,
25            _ => unreachable!(),
26        }
27    };
28}
29
30#[macro_export]
31macro_rules! noderef_as_mut {
32    ($ref:expr, $type:ident) => {
33        match *$ref.borrow_mut() {
34            NodeBox::$type(ref mut deref) => deref,
35            _ => unreachable!(),
36        }
37    };
38}