Implementing an RPN macro in Rust: https://blog.cloudflare.com/writing-complex-macros-in-rust-reverse-polish-notation/ (includes a really useful section on robust macros that produce good error messages)