Procedural macros are not restricted to pure transcription and can contain arbitrary Rust code.
This means they can be harder to understand, and cannot be as easily proved to work as intended.
Procedural macros can have arbitrary side effects, which can exhaust compiler resources or
expose a vulnerability for users of adopted code.