oasis_core_runtime/storage/mkvs/tree/
macros.rs1#[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 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}