在 Rust 的宏中,默认情况下会对宏变量进行转义。是否有任何方法可以使它们不被转义?
macro_rules! some {
( $var:expr ) => ( "$var" );
}
some!(1) // returns "$var", not "1"
这对于连接编译时的字符串等操作非常有用。
看起来你需要使用stringify!
宏:
macro_rules! some {
( $var:expr ) => ( stringify!($var) );
}
fn main() {
let s = some!(1);
println!("{}", s);
}
你可能还需要 concat!
。
另请参见: