November 2017
Intermediate to advanced
264 pages
5h 45m
English
Here is a macro, create_fn, to create a new function at compile time:
macro_rules! create_fn {
($fname:ident) => (
fn $fname() {
println!("Called the function {:?}()", stringify!($fname))
}
)
}
stringify! is a built-in macro that makes a string from its argument.
Now we can invoke this macro with create_fn!(fn1);. This statement does not sit inside main() or another function; it is transformed during compilation into the function definition. Then a normal call to that function fn1() will call it, here printing:
Called the function "fn1"().
Read now
Unlock full access