Creating your own standard macros
Since Rust 1.0, we have had a great macro system. Macros allow us to apply some code to multiple types or expressions, as they work by expanding themselves at compile time. This means that when you use a macro, you are effectively writing a lot of code before the actual compilation starts. This has two main benefits, first, the codebase can be easier to maintain by being smaller and reusing code, and second, since macros expand before starting the creation of object code, you can abstract at the syntactic level.
For example, you can have a function like this one:
fn add_one(input: u32) -> u32 { input + 1 }
This function restricts the input to u32
types and the return type to u32
. We could add some more accepted types by using generics, which may accept &u32
if we use the Add
trait. Macros allow us to create this kind of code for any element that can be written to the left of the +
sign and it will be expanded differently for each type of element...