diff --git a/src/struct_info.rs b/src/struct_info.rs index 4558b25e..13debd4e 100644 --- a/src/struct_info.rs +++ b/src/struct_info.rs @@ -126,6 +126,13 @@ impl<'a> StructInfo<'a> { quote!(#[doc(hidden)]) }; + let mut b_decl_generics = b_generics.clone(); + for param in &mut b_decl_generics.params { + if let syn::GenericParam::Type(ref mut param) = param { + param.default = Some(empties_tuple.clone().into()); + } + } + let (b_generics_impl, b_generics_ty, b_generics_where_extras_predicates) = b_generics.split_for_impl(); let mut b_generics_where: syn::WhereClause = syn::parse2(quote! { where TypedBuilderFields: Clone @@ -149,7 +156,7 @@ impl<'a> StructInfo<'a> { #[must_use] #builder_type_doc #[allow(dead_code, non_camel_case_types, non_snake_case)] - #vis struct #builder_name #b_generics { + #vis struct #builder_name #b_decl_generics { fields: #all_fields_param, phantom: (#( #phantom_generics ),*), } diff --git a/tests/tests.rs b/tests/tests.rs index d7a887ed..df01a40b 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -253,6 +253,7 @@ fn test_builder_name() { #[derive(TypedBuilder)] struct Foo {} + let _: FooBuilder = Foo::builder(); let _: FooBuilder<_> = Foo::builder(); }