Я хочу создать макрос, который печатает "Hello" определенное количество раз. Он используется как:
many_greetings!(3); // expands to three `println!("Hello");` statements
Наивный способ создания этого макроса:
macro_rules! many_greetings {
($times:expr) => {{
println!("Hello");
many_greetings!($times - 1);
}};
(0) => ();
}
Однако это не работает, потому что компилятор не оценивает выражения; $times - 1
не вычисляется, а вводится как новое выражение в макрос.