@@ -302,25 +302,37 @@ impl ImplTrait for ImplDefault {
302302
303303 fn struct_items ( & self , item : & ItemStruct , _: & ImplArgs ) -> Result < ( Toks , Toks ) > {
304304 let type_ident = & item. ident ;
305- let mut inner;
306- match & item. fields {
305+ let inner = match & item. fields {
307306 Fields :: Named ( fields) => {
308- inner = quote ! { } ;
307+ let mut toks = Toks :: new ( ) ;
309308 for field in fields. named . iter ( ) {
309+ for attr in & field. attrs {
310+ if attr. path ( ) . get_ident ( ) . is_some_and ( |path| path == "cfg" ) {
311+ attr. to_tokens ( & mut toks) ;
312+ }
313+ }
314+
310315 let ident = field. ident . as_ref ( ) . unwrap ( ) ;
311- inner . append_all ( quote ! { #ident: Default :: default ( ) , } ) ;
316+ toks . append_all ( quote ! { #ident: Default :: default ( ) , } ) ;
312317 }
313- inner = quote ! { #type_ident { #inner } } ;
318+ quote ! { #type_ident { #toks } }
314319 }
315320 Fields :: Unnamed ( fields) => {
316- inner = quote ! { } ;
317- for _ in 0 ..fields. unnamed . len ( ) {
318- inner. append_all ( quote ! { Default :: default ( ) , } ) ;
321+ let mut toks = Toks :: new ( ) ;
322+ for field in fields. unnamed . iter ( ) {
323+ for attr in & field. attrs {
324+ if attr. path ( ) . get_ident ( ) . is_some_and ( |path| path == "cfg" ) {
325+ attr. to_tokens ( & mut toks) ;
326+ }
327+ }
328+
329+ toks. append_all ( quote ! { Default :: default ( ) , } ) ;
319330 }
320- inner = quote ! { #type_ident( #inner ) } ;
331+ quote ! { #type_ident( #toks ) }
321332 }
322- Fields :: Unit => inner = quote ! { #type_ident } ,
323- }
333+ Fields :: Unit => quote ! { #type_ident } ,
334+ } ;
335+
324336 let method = quote ! {
325337 fn default ( ) -> Self {
326338 #inner
0 commit comments