# What are macros used for?


* Metaprogramming - a program that generate a program
* DRY - Don't Repeate Yourself
* DSL - Domain Specific Language
* Variadic Interfaces (the same function name but different number of arguments, eg. sum())


* [Macros in the reference](https://doc.rust-lang.org/reference/macros.html)
* [The Little book of Rust Macros](https://veykril.github.io/tlborm/)
* [Macros tutorial](https://blog.logrocket.com/macros-in-rust-a-tutorial-with-examples/)


