我已经把我在这个片段上看到的一个问题写下来了
macro_rules! test_impl {
(&mut $_:ty) => { 1 };
(&$_:ty) => { 2 };
($_:ty) => { 3 };
}
macro_rules! test {
($val: literal, $($t:ty), *) => { ($val $(, test_impl!($t))*) }
}
fn main() {
// I'm expecting (0, 3, 2, 1) here...
println!("{:?}", test!(0, f64, &f64, &mut f64));
}当印刷结束时:
(0, 3, 3, 3)似乎没有传递t类型的引用和可变部分。我明白这是怎么回事了吗?是否有办法通过外部test!宏传递“引用/哑值”并在test_impl!中进行匹配?
https://stackoverflow.com/questions/72539203
复制相似问题