declarative macro
A macro written as patterns that expand into code.
macro_rules! macros match their input against patterns with fragment specifiers (expr, ident, ty, tt...) and repetitions, and expand to token trees.
Examples
show!(temps.len()), with($value:expr) => { println!("{} = {:?}", stringify!($value), $value) }, printstemps.len() = 3.