I'm trying to do something like the following:
macro_rules! attr_trial {
($msg:expr) => {{
let id = env!("SOME_ENV");
#[link_section = env!("SOME_ENV")]
static MESSAGE: &'static str = $msg;
}};
}
And I get the following error:
error: unexpected token: `env`
--> src/main.rs:34:18
|
34 | #[link_section = env!("SOME_ENV")]
| ^
Absolutely, it is possible. Here's a macro that emits a
test
attribute from within a macro:It's not possible in all contexts, however. For example, you can't emit just an attribute because the attribute is expected to be attached to an item:
Your actual question is closer to "is it possible to call a macro inside of an attribute". The answer to that appears to be no - the parser does not expect a macro expansion in that location. Perhaps you want to look at code generation or procedural macros, depending on what you are trying to do.