diff --git a/bon-macros/src/builder/builder_gen/builder_decl.rs b/bon-macros/src/builder/builder_gen/builder_decl.rs index 474fae43..f25c4256 100644 --- a/bon-macros/src/builder/builder_gen/builder_decl.rs +++ b/bon-macros/src/builder/builder_gen/builder_decl.rs @@ -70,8 +70,15 @@ impl super::BuilderGenCtx { let docs = &self.builder_type.docs; let state_var = &self.state_var; - let custom_fields_idents = self.custom_fields().map(|field| &field.ident); - let custom_fields_types = self.custom_fields().map(|field| &field.norm_ty); + let custom_fields = self.custom_fields().map(|field| { + let ident = &field.ident; + let ty = &field.norm_ty; + let doc = format!("Private builder field `{ident}` for use in custom methods."); + quote! { + #[doc = #doc] + #ident: #ty + } + }); quote! { #[must_use = #must_use_message] @@ -109,7 +116,7 @@ impl super::BuilderGenCtx { #( #start_fn_args_fields, )* - #( #custom_fields_idents: #custom_fields_types, )* + #( #custom_fields, )* #private_field_attrs __unsafe_private_named: ( diff --git a/bon-sandbox/src/docs_in_private_items.rs b/bon-sandbox/src/docs_in_private_items.rs index d1ae5b7b..ba4fba36 100644 --- a/bon-sandbox/src/docs_in_private_items.rs +++ b/bon-sandbox/src/docs_in_private_items.rs @@ -11,6 +11,10 @@ struct ExampleStruct { #[builder(start_fn)] start_fn: u32, + /// Docs on `field` member + #[builder(field)] + field: u32, + /// Docs on `finish_fn` member #[builder(finish_fn)] finish_fn: u32, @@ -27,6 +31,10 @@ impl ExampleStruct { #[builder(start_fn)] start_fn: u32, + /// Docs on `field` member + #[builder(field)] + field: u32, + /// Docs on `finish_fn` member #[builder(finish_fn)] finish_fn: u32, @@ -35,6 +43,7 @@ impl ExampleStruct { regular: u32, ) { let _ = start_fn; + let _ = field; let _ = finish_fn; let _ = regular; } @@ -47,6 +56,10 @@ impl ExampleStruct { #[builder(start_fn)] start_fn: u32, + /// Docs on `field` member + #[builder(field)] + field: u32, + /// Docs on `finish_fn` member #[builder(finish_fn)] finish_fn: u32, @@ -56,6 +69,7 @@ impl ExampleStruct { ) { let _ = self; let _ = start_fn; + let _ = field; let _ = finish_fn; let _ = regular; } @@ -68,6 +82,10 @@ const fn example_function( #[builder(start_fn)] start_fn: u32, + /// Docs on `field` member + #[builder(field)] + field: u32, + /// Docs on `finish_fn` member #[builder(finish_fn)] finish_fn: u32, @@ -76,6 +94,7 @@ const fn example_function( regular: u32, ) { let _ = start_fn; + let _ = field; let _ = finish_fn; let _ = regular; }