transformer-derive 0.1.1

Macros implementation for #[derive(Transform)]
Documentation
use proc_macro2::TokenStream;
use proc_macro_error2::abort;
use quote::quote;
use syn::{Data, DataStruct, DeriveInput};

pub fn expand_transform(input: DeriveInput) -> syn::Result<TokenStream> {
    let _fields = match input.data {
        Data::Struct(DataStruct { fields, .. }) => fields,
        _ => {
            abort!(input.ident, "`#[derive(Transform)]` only works on structs"; help = "Try using the derive macro on a struct")
        }
    };

    let struct_name = input.ident;
    let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();

    Ok(quote! {
        #[automatically_derived]
        impl #impl_generics transformer::Transform for #struct_name #ty_generics #where_clause {
            fn transform(self) -> Self {
                self
            }
        }
    })
}