Macros are for when you run out of language
As @littlecalculist always told me, “macros are for when you run out of language”. If you still have language left—and Rust gives you a lot of language—use the language first.
The benefit of a macro oris that you can model all of the relevant state of the system, and use it to compile a solution.
When APIs have a lot of interconnected state, this might be the only reasonable approach.
- GLSL shader compilers