我在 Rust 中找到了几个有用的宏,即:file!(), line!(), stringify!()
我还发现 Rust 允许使用可变参数的宏,如此处所述:
macro_rules! print_all {
($($args:expr),*) => {{
$(
println!("{}", $args);
)*
}}
}
我的目标是以某种方式将所有这些宏组合到一个我将在故障排除/调试期间使用的宏中。trace!
所以在下面的例子中调用宏:
let a: i32 = 1;
let b: i32 = 2;
trace!(a,b)
应该扩展到这样的东西:
println!("TRACE: file: {}, line: {}, a: {}, b: {}", file!(), line!(), a, b);
可能吗?如果是,那么这样的宏将如何工作?