update default support for all types
This commit is contained in:
		
							parent
							
								
									23d8d1fa05
								
							
						
					
					
						commit
						402b6fe421
					
				| @ -57,14 +57,24 @@ pub fn parse( | ||||
|         Some(FieldType::FieldTypeU64) => build_default_value(label, "e!{u64}, "e!{0}, &field_attrs.default), | ||||
|         Some(FieldType::FieldTypeF32) => build_default_value(label, "e!{f32}, "e!{0.0}, &field_attrs.default), | ||||
|         Some(FieldType::FieldTypeF64) => build_default_value(label, "e!{f64}, "e!{0.0}, &field_attrs.default), | ||||
|         Some(FieldType::FieldTypeStruct { struct_name }) => Some(quote!{ | ||||
|         Some(FieldType::FieldTypeStruct { struct_name }) => { | ||||
|           build_default_value(label, "e!{#struct_name}, "e!{#struct_name::default()}, &field_attrs.default) | ||||
|         } | ||||
|         Some(FieldType::FieldTypeOption { .. }) => { | ||||
|           if let Some(d) = &field_attrs.default { | ||||
|             let default_function = Ident::new(&d, Span::call_site()); | ||||
| 
 | ||||
|             Some(quote!{ | ||||
|               #[allow(unused_mut, non_snake_case, non_camel_case_types)] | ||||
|           let mut #label : #struct_name = #struct_name::default(); | ||||
|         }), | ||||
|         Some(FieldType::FieldTypeOption { .. }) => Some(quote!{ | ||||
|               let mut #label = #default_function(); | ||||
|             }) | ||||
|           } else { | ||||
|             Some(quote!{ | ||||
|               #[allow(unused_mut, non_snake_case, non_camel_case_types)] | ||||
|               let mut #label = None; | ||||
|         }), | ||||
|             }) | ||||
|           } | ||||
|         } | ||||
|         Some(FieldType::FieldTypeVec { data_type }) => { | ||||
|           let dt = Box::into_raw(data_type); | ||||
|           match unsafe { dt.as_ref() } { | ||||
| @ -104,10 +114,9 @@ pub fn parse( | ||||
|             Some(&FieldType::FieldTypeF64) => { | ||||
|               build_default_value(label, "e!{Vec<f64>}, "e!{vec![]}, &field_attrs.default) | ||||
|             } | ||||
|             Some(&FieldType::FieldTypeStruct { ref struct_name }) => Some(quote!{ | ||||
|               #[allow(unused_mut)] | ||||
|               let mut #label : Vec<#struct_name> = vec![]; | ||||
|             }), | ||||
|             Some(&FieldType::FieldTypeStruct { ref struct_name }) => { | ||||
|               build_default_value(label, "e!{Vec<#struct_name>}, "e!{vec![]}, &field_attrs.default) | ||||
|             } | ||||
|             Some(&FieldType::FieldTypeOption { .. }) | Some(&FieldType::FieldTypeVec { .. }) => { | ||||
|               unimplemented!(); | ||||
|             } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user