// Output of statement macros is always parsed as a statement, so no semicolon // is needed on the inner macro. macro_rules! m { (macro) => { m!(stmts) }; (stmts) => { let x = 3; x - 3 } } fn foo() -> i32 { m!{macro} } fn main() -> i32 { foo() }