Skip to content

Commit 5498f4b

Browse files
committed
wip
1 parent 3fb960b commit 5498f4b

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

module/core/former_meta/src/derive_former/former_enum/struct_non_zero.rs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub( super ) fn handle_struct_non_zero_variant
6060
let _enum_generics_where_clause = ctx.merged_where_clause; // Renamed for clarity, prefixed with _
6161

6262
// Create a version of enum_generics_ty *without* the trailing comma for use in type names
63-
let enum_generics_ty_no_comma = enum_generics_ty_with_comma.pairs().map( | p | p.value().clone() ).collect::< Punctuated< _, Comma > >(); // Corrected: Added .clone()
63+
let enum_generics_ty_no_comma : Punctuated<GenericParam, Comma> = enum_generics_ty_with_comma.into_iter().collect(); // Use into_iter().collect()
6464

6565

6666
// Check if the attribute is present using .is_some()
@@ -236,8 +236,8 @@ pub( super ) fn handle_struct_non_zero_variant
236236
// Generate token stream for the type within the angle brackets for FormingEnd
237237
// Construct the punctuated list for DefinitionTypes generics
238238
let mut forming_end_def_types_generics_vec : Vec<GenericParam> = inner_generics_ty_punctuated_no_comma.iter().cloned().collect(); // Use iter().cloned()
239-
let context_param : GenericParam = parse_quote!( Context = () );
240-
let formed_param : GenericParam = parse_quote!( Formed = #enum_name< #enum_generics_ty_no_comma > );
239+
let context_param : GenericParam = parse_quote!( Context2 ); // Use generic parameter directly
240+
let formed_param : GenericParam = parse_quote!( Formed2 ); // Use generic parameter directly
241241
forming_end_def_types_generics_vec.push( context_param );
242242
forming_end_def_types_generics_vec.push( formed_param );
243243
let forming_end_def_types_generics = Punctuated::<_, Comma>::from_iter( forming_end_def_types_generics_vec );
@@ -753,9 +753,11 @@ pub( super ) fn handle_struct_non_zero_variant
753753
where_clause_with_end_bound = quote! { #where_clause_with_end_bound , };
754754
}
755755
// Construct DefinitionTypes generics list for the bound
756-
let mut def_types_bound_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
757-
def_types_bound_generics_vec.push( context_param.clone() ); // Clone before moving
758-
def_types_bound_generics_vec.push( formed_param.clone() ); // Clone before moving
756+
let mut def_types_bound_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
757+
let context_param : GenericParam = parse_quote!( Context2 ); // Use generic parameter directly
758+
let formed_param : GenericParam = parse_quote!( Formed2 ); // Use generic parameter directly
759+
def_types_bound_generics_vec.push( context_param );
760+
def_types_bound_generics_vec.push( formed_param );
759761
let def_types_bound_generics = Punctuated::<_, Comma>::from_iter( def_types_bound_generics_vec );
760762

761763
where_clause_with_end_bound = quote! { #where_clause_with_end_bound End2 : former::FormingEnd< #def_types_name< #def_types_bound_generics > > }; // Use constructed list
@@ -781,7 +783,7 @@ pub( super ) fn handle_struct_non_zero_variant
781783
// Construct the generics for the former struct directly
782784
let mut former_generics_params_vec : Vec<GenericParam> = generics.params.iter().cloned().collect();
783785
// Construct the Definition generic argument
784-
let mut def_arg_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
786+
let mut def_arg_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
785787
let context_arg_param : GenericParam = parse_quote!( Context = () );
786788
let formed_arg_param : GenericParam = parse_quote!( Formed = #enum_name<#enum_generics_ty_no_comma> );
787789
let end_arg_param : GenericParam = parse_quote!( End = #end_struct_name<#enum_generics_ty_no_comma> );
@@ -798,7 +800,7 @@ pub( super ) fn handle_struct_non_zero_variant
798800
let mut former_where_predicates : Punctuated< syn::WherePredicate, Comma > = Punctuated::new();
799801
former_where_predicates.push( parse_quote!{ Definition : former::FormerDefinition< Storage = #storage_struct_name< #enum_generics_ty_no_comma > > } ); // Use no_comma
800802
// Construct DefinitionTypes generics list for the bound
801-
let mut def_types_bound_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
803+
let mut def_types_bound_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
802804
// let context_param_bound : GenericParam = parse_quote!( Context = () ); // Already defined
803805
// let formed_param_bound : GenericParam = parse_quote!( Formed = #enum_name< #enum_generics_ty_no_comma > ); // Already defined
804806
def_types_bound_generics_vec.push( context_param.clone() );
@@ -884,6 +886,7 @@ pub( super ) fn handle_struct_non_zero_variant
884886
impl< #former_generics_impl > #former_name < #former_generics_ty_no_comma > // Use no_comma
885887
where #former_impl_where_clause // Use the constructed where clause with bounds
886888
{
889+
use former::FormingEnd; // Bring FormingEnd trait into scope
887890
// Standard former methods (new, begin, form, end) - Adjusted to use Definition::Types
888891
#[ inline( always ) ] pub fn new( on_end : Definition::End ) -> Self { Self::begin( None, None, on_end ) }
889892
#[ inline( always ) ] pub fn new_coercing< IntoEnd >( end : IntoEnd ) -> Self where IntoEnd : Into< Definition::End > { Self::begin_coercing( None, None, end ) }
@@ -953,7 +956,7 @@ pub( super ) fn handle_struct_non_zero_variant
953956
quote! {}
954957
};
955958
// Construct DefinitionTypes generics list for FormingEnd impl
956-
let mut forming_end_def_types_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
959+
let mut forming_end_def_types_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
957960
let context_param : GenericParam = parse_quote!( Context2 = () );
958961
let formed_param : GenericParam = parse_quote!( Formed2 = #enum_name< #enum_generics_ty_no_comma > );
959962
forming_end_def_types_generics_vec.push( context_param );
@@ -1006,7 +1009,7 @@ pub( super ) fn handle_struct_non_zero_variant
10061009
quote! {}
10071010
};
10081011
// Construct Definition generics list for return type
1009-
let mut static_method_def_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
1012+
let mut static_method_def_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
10101013
let context_param : GenericParam = parse_quote!( Context2 = () );
10111014
let formed_param : GenericParam = parse_quote!( Formed2 = #enum_name< #enum_generics_ty_no_comma > );
10121015
let end_param : GenericParam = parse_quote!( End2 = #end_struct_name< #enum_generics_ty_no_comma > );
@@ -1039,7 +1042,7 @@ pub( super ) fn handle_struct_non_zero_variant
10391042
let constructor_params : Vec<_> = variant_field_info.iter().filter( |f| f.is_constructor_arg ).map( |f| { let pn = &f.ident; let ty = &f.ty; quote! { #pn : impl Into<#ty> } } ).collect();
10401043
let all_fields_are_args = !variant_field_info.is_empty() && variant_field_info.iter().all( |f| f.is_constructor_arg );
10411044
// Construct Definition generics list for return type
1042-
let mut standalone_def_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
1045+
let mut standalone_def_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
10431046
let context_param : GenericParam = parse_quote!( Context2 = () );
10441047
let formed_param : GenericParam = parse_quote!( Formed2 = #enum_name< #enum_generics_ty_no_comma > );
10451048
let end_param : GenericParam = parse_quote!( End2 = #end_struct_name< #enum_generics_ty_no_comma > );
@@ -1048,7 +1051,7 @@ pub( super ) fn handle_struct_non_zero_variant
10481051
standalone_def_generics_vec.push( end_param );
10491052
let standalone_def_generics = Punctuated::<_, Comma>::from_iter( standalone_def_generics_vec );
10501053
// Construct Former generics list for return type
1051-
let mut standalone_former_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.iter().cloned().collect(); // Use iter().cloned()
1054+
let mut standalone_former_generics_vec : Vec<GenericParam> = enum_generics_ty_no_comma.clone().into_iter().collect(); // Use clone().into_iter()
10521055
let def_param : GenericParam = parse_quote!( Definition = #def_name< #standalone_def_generics > );
10531056
standalone_former_generics_vec.push( def_param );
10541057
let standalone_former_generics = Punctuated::<_, Comma>::from_iter( standalone_former_generics_vec );

0 commit comments

Comments
 (0)