1#[macro_export(json_macros)]
32macro_rules! des {
33
34
35 {@set_let_mut_obj ($c:expr) ($($obj:tt)+) ($var:ident, $($tt:tt)+)} => {
36 let name = val!("avi");
37 let mut $var = &mut $($obj)*[stringify!($var)];
38 des!{@set_let_mut_obj ($c+1) ($($obj)+) ($($tt)*)};
39 };
40
41 {@set_let_mut_obj ($c:expr) ($($obj:tt)+) ($var:ident)} => {
42 let mut $var = $($obj)*[stringify!($var)];
43 };
44
45 {@destructing let mut {$($tt:tt)*} = $obj:expr; $($rest:tt)*} => (
46 des!{@set_let_mut_obj (0) ($obj) ($($tt)*)};
47 des!(@destructing $($rest)*);
48 );
49
50
51
52 {@destructing let {$($tt:tt)*} = $obj:expr; $($rest:tt)*} => (
53
54 );
56
57 {@destructing let mut {$($tt:tt)*} = $obj:expr;} => (
58 des!{@set_let_mut_obj (0) ($obj) ($($tt)*)};
59 );
60
61 {@destructing let {$($tt:tt)*} = $obj:expr;} => (
62
63 des!(@destructing $($rest)*);
64 );
65
66 {@destructing let mut [$($tt:tt)*] = $obj:expr; $($rest:tt)*} => (
67
68 des!(@destructing $($rest)*);
69 );
70
71 {@destructing let mut [$($tt:tt)*] = $obj:expr; } => (
72
73 des!(@destructing $($rest)*);
74 );
75
76 {@destructing let [$($tt:tt)*] = $obj:expr; $($rest:tt)*} => (
77 des!(@destructing $($rest)*);
78 );
79
80 {@destructing let [$($tt:tt)*] = $obj:expr;} => (
81 des!(@destructing $($rest)*);
82 );
83
84 {@destructing $st:stmt; $($rest:tt)*}=> (
86 $st;
87 des!(@destructing $($rest)*);
88 );
89
90 {@destructing} => (
92
93 );
94
95 {$($tt:tt)+} => {
97 des!(@destructing $($tt)+);
98 }
99}