How do I create a Rust macro to define a String va

2019-02-21 19:03发布

I want to write a macro to define something like below:

let FOO: String = "FOO".to_string();

It is possible for me to have a macro:

macro_rules! my_macro {
    ($name: ident, $val: expr) => {
        let $name: String = $val.to_string();
    }
}

and use it as my_macro!(FOO, "FOO");

However, this is a bit redundant. I expect to have something like my_macro!(FOO), and it can expand and use the $name as identifier, but also in the string value.

标签: macros rust
1条回答
成全新的幸福
2楼-- · 2019-02-21 19:51

You want stringify!:

macro_rules! str_var {
    ($name:ident) => {
        let $name = String::from(stringify!($name));
    };
}

fn main() {
    str_var!(foo);
    println!("foo: {:?}", foo);
}
查看更多
登录 后发表回答