builder_pattern_macro/
lib.rs

1//! A macro crate for [builder-pattern](https://crates.io/crates/builder-pattern).
2//! Do not use this crate directly.
3
4mod 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/// A derivable builder macro.
23#[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}