builder_pattern_macro/
lib.rs1mod attributes;
5mod builder;
6mod field;
7mod struct_impl;
8mod struct_input;
9
10use struct_input::StructInput;
11
12use proc_macro::TokenStream;
13use quote::ToTokens;
14use syn::parse_macro_input;
15
16#[macro_use]
17extern crate quote;
18extern crate syn;
19
20extern crate proc_macro2;
21
22#[proc_macro_derive(
24 Builder,
25 attributes(
26 default,
27 default_async,
28 default_lazy,
29 hidden,
30 into,
31 public,
32 setter,
33 validator
34 )
35)]
36pub fn derive_builder(input: TokenStream) -> TokenStream {
37 let input = parse_macro_input!(input as StructInput);
38 TokenStream::from(input.into_token_stream())
39}