derive_builder_macro/
lib.rs

1//! Derive a builder for a struct
2
3#![crate_type = "proc-macro"]
4#![deny(warnings)]
5
6extern crate proc_macro;
7#[macro_use]
8extern crate syn;
9extern crate derive_builder_core;
10
11use proc_macro::TokenStream;
12
13/// Create a builder struct for the deriving struct.
14///
15/// See the `derive_builder` crate documentation for more details.
16#[proc_macro_derive(
17    Builder,
18    attributes(
19        builder,
20        builder_field_attr,
21        builder_impl_attr,
22        builder_setter_attr,
23        builder_struct_attr
24    )
25)]
26pub fn derive(input: TokenStream) -> TokenStream {
27    let ast = parse_macro_input!(input as syn::DeriveInput);
28    derive_builder_core::builder_for_struct(ast).into()
29}