Procedural Macros in Rust (part 1)