structural-typing-macros 0.1.7

Procedural macros for structural-typing crate
Documentation
mod builders;
mod constructors;
mod fields_module;
mod generics_utils;
mod getters;
mod merge;
mod extract;
mod serde_deserialize;
mod struct_def;

use proc_macro2::TokenStream;
use quote::quote;
use syn::DeriveInput;

use crate::parsing;

pub fn generate(input: DeriveInput) -> syn::Result<TokenStream> {
    let info = parsing::parse_struct(input)?;

    let (serde_helper, serde_try_from) = serde_deserialize::generate(&info)?;
    let fields_mod = fields_module::generate(&info, serde_helper);
    let struct_def = struct_def::generate(&info);
    let constructors = constructors::generate(&info);
    let builders = builders::generate(&info);
    let getters = getters::generate(&info);
    let merge = merge::generate(&info);
    let extract = extract::generate(&info);

    Ok(quote! {
        #fields_mod

        #serde_try_from

        #struct_def

        #constructors

        #builders

        #getters

        #merge

        #extract
    })
}