| //@ run-pass | |
| #![allow(unused_macro_rules)] | |
| /// A compile-time map from identifiers to arbitrary (heterogeneous) expressions | |
| macro_rules! ident_map { | |
| ( $name:ident = { $($key:ident => $e:expr,)* } ) => { | |
| macro_rules! $name { | |
| $( | |
| ( $key ) => { $e }; | |
| )* | |
| // Empty invocation expands to nothing. Needed when the map is empty. | |
| () => {}; | |
| } | |
| }; | |
| } | |
| ident_map!(my_map = { | |
| main => 0, | |
| }); | |
| fn main() { | |
| my_map!(main); | |
| } |