lombok 0.4.0

Lombok port for Rust
Documentation
extern crate proc_macro;

use proc_macro::TokenStream;
use std::iter::FromIterator;

use all_args_constructor::all_args_constructor;
use builder::builder;
use equals_and_hash_code::equals_and_hash_code;
use getter::getter;
use getter_mut::getter_mut;
use no_args_constructor::no_args_constructor;
use setter::setter;
use to_string::to_string;

mod all_args_constructor;
mod builder;
mod equals_and_hash_code;
mod getter;
mod getter_mut;
mod no_args_constructor;
mod setter;
mod to_string;

mod utils;

#[proc_macro_derive(Getter)]
pub fn derive_getter(input: TokenStream) -> TokenStream {
    getter(input)
}

#[proc_macro_derive(GetterMut)]
pub fn derive_getter_mut(input: TokenStream) -> TokenStream {
    getter_mut(input)
}

#[proc_macro_derive(Setter)]
pub fn derive_setter(input: TokenStream) -> TokenStream {
    setter(input)
}

#[proc_macro_derive(NoArgsConstructor)]
pub fn derive_no_args_constructor(input: TokenStream) -> TokenStream {
    no_args_constructor(input)
}

#[proc_macro_derive(AllArgsConstructor)]
pub fn derive_all_args_constructor(input: TokenStream) -> TokenStream {
    all_args_constructor(input)
}

#[proc_macro_derive(Builder)]
pub fn derive_builder(input: TokenStream) -> TokenStream {
    builder(input)
}

#[proc_macro_derive(EqualsAndHashCode)]
pub fn derive_equals_and_hash_code(input: TokenStream) -> TokenStream {
    equals_and_hash_code(input)
}

#[proc_macro_derive(ToString)]
pub fn derive_to_string(input: TokenStream) -> TokenStream {
    to_string(input)
}

#[proc_macro_derive(Data)]
pub fn derive_data(input: TokenStream) -> TokenStream {
    TokenStream::from_iter(
        vec![
            getter(input.clone()),
            setter(input.clone()),
            no_args_constructor(input.clone()),
            all_args_constructor(input.clone()),
            equals_and_hash_code(input.clone()),
            to_string(input),
        ]
        .into_iter(),
    )
}

#[proc_macro_derive(Value)]
pub fn derive_value(input: TokenStream) -> TokenStream {
    TokenStream::from_iter(
        vec![
            getter(input.clone()),
            all_args_constructor(input.clone()),
            equals_and_hash_code(input.clone()),
            to_string(input),
        ]
        .into_iter(),
    )
}