A macro parameter is a named binding that captures syntax matched by a declarative macro. Write a dollar sign before the name: `$x:expr`. The dollar sign makes `x` a macro variable; `expr` restricts the match to one Rust expression. section 2.1.4
{$x:expr} => {
{
let mut v = Vec::new();
v.push($x);
v
}
};
This matcher captures an expression in `$x` and reuses it in the transcriber to push that value into a vector. section 2.1.4
Fragment specifiers determine what a parameter accepts. Common targets include expressions, identifiers, literals, and types. Prefer the most concrete specifier that fits: `tt` accepts almost anything, but makes matchers broader, less predictable, and harder to manage. section 2.1.4
Capturing repeated expressions
A repetition such as `$[($x:expr),+]` captures one or more comma-separated expressions, then expands `$x` for each value in the generated code. section 2.1.4

