qqx_macro/
lib.rs

1#![feature(const_panic)]
2
3mod polygon;
4mod callback;
5mod tls;
6
7use proc_macro::TokenStream;
8
9#[proc_macro_attribute]
10pub fn qqx(attribute: TokenStream, input: TokenStream) -> TokenStream {
11    let attribute = attribute.to_string();
12
13    if let Some(x) = tls::take(&attribute, "polygon(..)") {
14        polygon::polygon(x, input)
15    } else if let Some(x) = tls::take(&attribute, "callback(..)") {
16        callback::callback(x, input)
17    } else {
18        panic!("Unknown attribute `{}`", attribute)
19    }
20}