Warning
This post was published 38 days ago. The information described in this article may have changed.
Can someone please explain to me why (some of) the following macros behave differently?
macro_rules! maybe_skip {
($prim:ty, $text:literal) => {
maybe_skip!($prim);
};
(u64) => {
println!("Skipping u64");
};
($prim:ty) => {
println!("Not skipping {}", stringify!($prim));
};
}
macro_rules! maybe_skip_again {
($prim:ident, $text:literal) => {
maybe_skip_again!($prim);
};
(u64) => {
println!("Skipping u64");
};
($prim:ident) => {
println!("Not skipping {}", stringify!($prim));
};
}
macro_rules! maybe_skip_again_again {
($prim:ident, $text:literal) => {
maybe_skip_again_again!($prim);
};
(u64) => {
println!("Skipping u64");
};
($prim:ty) => {
println!("Not skipping {}", stringify!($prim));
};
}
fn main() {
maybe_skip!(u32, "bla");
maybe_skip!(u64, "bla");
maybe_skip_again!(u32, "bla");
maybe_skip_again!(u64, "bla");
maybe_skip_again_again!(u32, "bla");
maybe_skip_again_again!(u64, "bla");
}
Output is:
Not skipping u32
Not skipping u64
Not skipping u32
Skipping u64
Not skipping u32
Skipping u64
2 posts - 2 participants
🏷️ rust_feed