pub fn macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    use darling::FromDeriveInput;
    use syn::Data;
    
    // Parse the struct
    let input = syn::parse_macro_input!(input as syn::DeriveInput);
    let struct_args = args::SerdeDiffStructArgs::from_derive_input(&input).unwrap();
    let target_type = if let Some(ref target) = struct_args.target {
        let span = proc_macro2::Span::call_site();
        let target_type_result = parse_string_to_type(target.to_owned(), span);
        Some(target_type_result.unwrap()) // is there something useful we could do with this error?
    } else {
        None
    };
    match input.data {
        Data::Struct(..) | Data::Enum(..) => {
            if struct_args.opaque {
                 generate_opaque(&input, struct_args)
             } else {
                 // Go ahead and generate the code                 
                 match generate(&input, struct_args, target_type) {
                     Ok(v) => v,
                     Err(v) => v,
                 }
             }
        }
        _ => unimplemented!()
    }
}
/// Reads in all tokens for the struct having the
Reads in all tokens for the struct having the
Reads in all tokens for the struct having the
pub fn macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    use darling::FromDeriveInput;
    use syn::Data;
    // Parse the struct
    let input = syn::parse_macro_input!(input as syn::DeriveInput);
    let struct_args = args::SerdeDiffStructArgs::from_derive_input(&input).unwrap();
    let target_type = if let Some(ref target) = struct_args.target {
        let span = proc_macro2::Span::call_site();
        let target_type_result = parse_string_to_type(target.to_owned(), span);
        Some(target_type_result.unwrap()) // is there something useful we could do with this error?
    } else {
        None
    };
    match input.data {
        Data::Struct(..) | Data::Enum(..) => {
            if struct_args.opaque {
                 generate_opaque(&input, struct_args)
             } else {
                 // Go ahead and generate the code                 
                 match generate(&input, struct_args, target_type) {
                     Ok(v) => v,
                     Err(v) => v,
                 }
             }
        }
        _ => unimplemented!()
    }
}
pub fn macro_derive ( input : proc_macro :: TokenStream ) -> proc_macro :: TokenStream { use darling :: FromDeriveInput ; use syn :: Data ; // Parse the struct let input = syn :: parse_macro_input ! ( input as syn DeriveInput ) ; let struct_args = args :: SerdeDiffStructArgs :: from_derive_input ( & input ) . unwrap ( ) ; let target_type = if let Some ( ref target ) = struct_args . target { let span = proc_macro2 :: Span :: call_site ( ) ; let target_type_result = parse_string_to_type ( target . to_owned ( ) , span ) ; Some ( target_type_result . unwrap ( ) ) // is there something useful we could do with this error? } else { None } ; match input . data { Data :: Struct ( .. ) | Data :: Enum ( .. ) => { if struct_args . opaque { generate_opaque ( & input , struct_args ) } else { // Go ahead and generate the code                  match generate ( & input , struct_args , target_type ) { Ok ( v ) => v , Err ( v ) => v , } } } _ => unimplemented ! ( ) } }
Reads in all tokens for the struct having the
Reads in all tokens for the struct having the
input
proc_macro::TokenStream