from_attr_macro/
lib.rs

1mod field_attr;
2mod flag_or_value;
3mod from_attr;
4mod from_ident;
5mod struct_attr;
6
7use proc_macro::TokenStream;
8use syn::{parse_macro_input, DeriveInput};
9
10pub(crate) const ATTRIBUTE_IDENT: &str = "attribute";
11
12#[proc_macro_derive(FromAttr, attributes(attribute))]
13pub fn from_attr(input: TokenStream) -> TokenStream {
14    let input = parse_macro_input!(input as DeriveInput);
15
16    from_attr::generate(input)
17        .unwrap_or_else(|err| err.to_compile_error())
18        .into()
19}
20
21#[proc_macro_derive(FromIdent)]
22pub fn from_ident(input: TokenStream) -> TokenStream {
23    let input = parse_macro_input!(input as DeriveInput);
24
25    from_ident::generate(input)
26        .unwrap_or_else(|err| err.to_compile_error())
27        .into()
28}
29
30#[proc_macro_derive(Debug)]
31pub fn debug(input: TokenStream) -> TokenStream {
32    let input = parse_macro_input!(input as DeriveInput);
33
34    from_ident::generate(input)
35        .unwrap_or_else(|err| err.to_compile_error())
36        .into()
37}