【发布时间】:2021-05-16 17:38:59
【问题描述】:
我想创建一个可以这样使用的宏
generate_code!(println!("macro argument is expression"));
generate_code!(|| println!("macro argument is closure"));
不幸的是,两个宏参数都匹配为“expr”。我的宏应该足够聪明,可以在第一种情况下添加||。这在 Rust 中可行吗?
macro_rules! generate_code {
// for `generate_code!(println!())`
($expression:expr) => {do_sth(|| $expression)};
// for `generate_code!(|| println!())`
($closure:expr???) => {do_sth($closure)};
}
【问题讨论】: