Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

macro hygiene

Variables a macro creates can't clash with variables at the place it's used.

Hygiene keeps identifiers introduced inside a macro_rules! expansion separate from same-named identifiers at the call site (for local variables and labels).

Examples

  • A macro that expands to let x = 99; leaves the caller's own x alone: after make_x!();, println!("{x}") still prints 5.

Read the full section →