Help stabilize a subset of Macros 2.0!

Hmm... doesn't rustc actually copy/paste token trees ? That means you cannot mess up precedence, as you can in C. For example,

C:

#define MULTWO(a) (a * 2)

MULTWO(4 + 1) // `6`
MULTWO((4 + 1)) // `10`

rust:

macro_rules! mul_two {
    ($a:expr) => { $a * 2 }
}

mul_two!(4 + 1); // always `10`
mul_two!((4 + 1)); // always `10`
1 Like