Macros 如何创建一个Rust宏来定义一个具有自己标识符值的字符串变量?
我想编写一个宏来定义如下内容:Macros 如何创建一个Rust宏来定义一个具有自己标识符值的字符串变量?,macros,rust,Macros,Rust,我想编写一个宏来定义如下内容: let FOO: String = "FOO".to_string(); 我可以有一个宏: macro_rules! my_macro { ($name: ident, $val: expr) => { let $name: String = $val.to_string(); } } 并将其用作my_宏!(FOO,“FOO”) 然而,这有点多余。我希望有类似于myu宏的东西!(FOO),它可以展开并使用$name作为标识
let FOO: String = "FOO".to_string();
我可以有一个宏:
macro_rules! my_macro {
($name: ident, $val: expr) => {
let $name: String = $val.to_string();
}
}
并将其用作my_宏!(FOO,“FOO”)代码>
然而,这有点多余。我希望有类似于myu宏的东西!(FOO)
,它可以展开并使用$name
作为标识符,但也可以在字符串值中使用。您需要:
很遗憾,您似乎无法在属性中使用
stringify
。
macro_rules! str_var {
($name:ident) => {
let $name = String::from(stringify!($name));
};
}
fn main() {
str_var!(foo);
println!("foo: {:?}", foo);
}