macro_rules! declare_stack_allocator_struct { (@as_expr $expr : expr) => { ... }; (@new_method $name : ident, $freelist_size : tt) => { ... }; (@new_calloc_method $name : ident, $freelist_size : tt) => { ... }; ($name :ident, $freelist_size : tt, malloc) => { ... }; ($name :ident, $freelist_size : tt, calloc) => { ... }; ($name :ident, $freelist_size : tt, stack) => { ... }; ($name :ident, $freelist_size : expr, global) => { ... }; }