Macros
Rust’s macro system is very powerful, but also kind of difficult to wrap your head around. We’re not going to teach you how to write your own fully-featured macros. Instead, we’ll show you how to use and create them.
If you’d like to learn more about writing your own macros, the macrokata project has a similar style of exercises to Rustlings, but is all about learning to write Macros.
Further information
Rustlings
macros1
// macros1.rs // Execute `rustlings hint macros1` or use the `hint` watch subcommand for a hint. // I AM NOT DONE macro_rules! my_macro { () => { println!("Check out my macro!"); }; } fn main() { my_macro(); }
macros2
// macros2.rs // Execute `rustlings hint macros2` or use the `hint` watch subcommand for a hint. // I AM NOT DONE fn main() { my_macro!(); } macro_rules! my_macro { () => { println!("Check out my macro!"); }; }
macros3
// macros3.rs // Make me compile, without taking the macro out of the module! // Execute `rustlings hint macros3` or use the `hint` watch subcommand for a hint. // I AM NOT DONE mod macros { macro_rules! my_macro { () => { println!("Check out my macro!"); }; } } fn main() { my_macro!(); }
macros4
// macros4.rs // Execute `rustlings hint macros4` or use the `hint` watch subcommand for a hint. // I AM NOT DONE macro_rules! my_macro { () => { println!("Check out my macro!"); } ($val:expr) => { println!("Look at this other macro: {}", $val); } } fn main() { my_macro!(); my_macro!(7777); }