Crates.io | macrotk-core |
lib.rs | macrotk-core |
version | 0.2.0 |
source | src |
created_at | 2021-05-13 19:34:46.209983 |
updated_at | 2021-05-15 17:31:35.36308 |
description | macrotk core types and functions. |
homepage | https://github.com/frostu8/macrotk |
repository | https://github.com/frostu8/macrotk.git |
max_upload_size | |
id | 397079 |
size | 10,443 |
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
}