3 unstable releases
0.2.0 | May 15, 2021 |
---|---|
0.1.1 | May 13, 2021 |
0.1.0 | May 13, 2021 |
#35 in #token-stream
Used in 2 crates
11KB
260 lines
macrotk
An extensible macro toolkit for Rust.
I got tired of writing the same functions for handling parameters to macros, specifically attribute macros. It turns out that I was so right about being tired of it that you can just write a macro for it. Yep, now we're going full macroception.
This has actually already been done before, but it's old, and I wanted to try out writing something like it.
use syn::{parse_macro_input, LitStr};
use macrotk::{meta::Meta, FromMeta};
use proc_macro::TokenStream;
#[derive(FromMeta)]
struct MacroMeta {
something: LitStr,
otherthing: LitStr,
}
#[proc_macro_attribute]
pub fn cool_macro(attr: TokenStream, item: TokenStream) -> TokenStream {
let attr = parse_macro_input!(attr as Meta<MacroMeta>);
// now we can just use these fields!
let something = &attr.something;
let otherthing = &attr.something;
// ... do stuff ...
item
}
Dependencies
~1.5MB
~34K SLoC