Exported macros expand in someone else's scope
Most item paths written inside a declarative macro are resolved at the invocation site. A helper type that happens to be imported in the defining crate may be absent or shadowed downstream. The special `$crate` metavariable names the crate that defined the macro, even when the consumer renamed that dependency.