Remove unneeded Option's and unsafe's
This commit is contained in:
		
							parent
							
								
									703a238d02
								
							
						
					
					
						commit
						5a0f0e55a7
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -27,19 +27,19 @@ pub fn serialize( | |||||||
| 
 | 
 | ||||||
|       let label_name = build_label_name(&field, &field_attrs); |       let label_name = build_label_name(&field, &field_attrs); | ||||||
| 
 | 
 | ||||||
|       match get_field_type(field) { |       get_field_type(field).and_then(|field| match field { | ||||||
|         Some(FieldType::FieldTypeString) |         FieldType::FieldTypeString | ||||||
|         | Some(FieldType::FieldTypeBool) |         | FieldType::FieldTypeBool | ||||||
|         | Some(FieldType::FieldTypeI8) |         | FieldType::FieldTypeI8 | ||||||
|         | Some(FieldType::FieldTypeU8) |         | FieldType::FieldTypeU8 | ||||||
|         | Some(FieldType::FieldTypeI16) |         | FieldType::FieldTypeI16 | ||||||
|         | Some(FieldType::FieldTypeU16) |         | FieldType::FieldTypeU16 | ||||||
|         | Some(FieldType::FieldTypeI32) |         | FieldType::FieldTypeI32 | ||||||
|         | Some(FieldType::FieldTypeU32) |         | FieldType::FieldTypeU32 | ||||||
|         | Some(FieldType::FieldTypeI64) |         | FieldType::FieldTypeI64 | ||||||
|         | Some(FieldType::FieldTypeU64) |         | FieldType::FieldTypeU64 | ||||||
|         | Some(FieldType::FieldTypeF32) |         | FieldType::FieldTypeF32 | ||||||
|         | Some(FieldType::FieldTypeF64) => { |         | FieldType::FieldTypeF64 => { | ||||||
|           if let Some(ref d) = field_attrs.default { |           if let Some(ref d) = field_attrs.default { | ||||||
|             let default_function = Ident::new(&d, Span::call_site()); |             let default_function = Ident::new(&d, Span::call_site()); | ||||||
|             Some(quote! { |             Some(quote! { | ||||||
| @ -72,10 +72,8 @@ pub fn serialize( | |||||||
|             }) |             }) | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|         Some(FieldType::FieldTypeOption { data_type }) => { |         FieldType::FieldTypeOption { data_type } => match *data_type { | ||||||
|           let dt = Box::into_raw(data_type); |           FieldType::FieldTypeString => { | ||||||
|           match unsafe { dt.as_ref() } { |  | ||||||
|             Some(&FieldType::FieldTypeString) => { |  | ||||||
|             if let Some(ref d) = field_attrs.default { |             if let Some(ref d) = field_attrs.default { | ||||||
|               let default_function = Ident::new(&d, Span::call_site()); |               let default_function = Ident::new(&d, Span::call_site()); | ||||||
|               Some(quote! { |               Some(quote! { | ||||||
| @ -101,17 +99,17 @@ pub fn serialize( | |||||||
|               }) |               }) | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeBool) |           FieldType::FieldTypeBool | ||||||
|             | Some(&FieldType::FieldTypeI8) |           | FieldType::FieldTypeI8 | ||||||
|             | Some(&FieldType::FieldTypeU8) |           | FieldType::FieldTypeU8 | ||||||
|             | Some(&FieldType::FieldTypeI16) |           | FieldType::FieldTypeI16 | ||||||
|             | Some(&FieldType::FieldTypeU16) |           | FieldType::FieldTypeU16 | ||||||
|             | Some(&FieldType::FieldTypeI32) |           | FieldType::FieldTypeI32 | ||||||
|             | Some(&FieldType::FieldTypeU32) |           | FieldType::FieldTypeU32 | ||||||
|             | Some(&FieldType::FieldTypeI64) |           | FieldType::FieldTypeI64 | ||||||
|             | Some(&FieldType::FieldTypeU64) |           | FieldType::FieldTypeU64 | ||||||
|             | Some(&FieldType::FieldTypeF32) |           | FieldType::FieldTypeF32 | ||||||
|             | Some(&FieldType::FieldTypeF64) => { |           | FieldType::FieldTypeF64 => { | ||||||
|             if let Some(ref d) = field_attrs.default { |             if let Some(ref d) = field_attrs.default { | ||||||
|               let default_function = Ident::new(&d, Span::call_site()); |               let default_function = Ident::new(&d, Span::call_site()); | ||||||
|               Some(quote! { |               Some(quote! { | ||||||
| @ -153,7 +151,7 @@ pub fn serialize( | |||||||
|               }) |               }) | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeVec { .. }) => { |           FieldType::FieldTypeVec { .. } => { | ||||||
|             let item_ident = Ident::new("yas_item", Span::call_site()); |             let item_ident = Ident::new("yas_item", Span::call_site()); | ||||||
|             let inner = enclose_formatted_characters(&item_ident, label_name); |             let inner = enclose_formatted_characters(&item_ident, label_name); | ||||||
| 
 | 
 | ||||||
| @ -178,9 +176,8 @@ pub fn serialize( | |||||||
|             } |             } | ||||||
|           } |           } | ||||||
|           _ => unimplemented!(), |           _ => unimplemented!(), | ||||||
|           } |         }, | ||||||
|         } |         FieldType::FieldTypeStruct { .. } => { | ||||||
|         Some(FieldType::FieldTypeStruct { .. }) => { |  | ||||||
|           if let Some(ref d) = field_attrs.default { |           if let Some(ref d) = field_attrs.default { | ||||||
|             let default_function = Ident::new(&d, Span::call_site()); |             let default_function = Ident::new(&d, Span::call_site()); | ||||||
|             Some(quote! { |             Some(quote! { | ||||||
| @ -222,7 +219,7 @@ pub fn serialize( | |||||||
|           } |           } | ||||||
|         } |         } | ||||||
|         _ => None, |         _ => None, | ||||||
|       } |       }) | ||||||
|     }) |     }) | ||||||
|     .filter_map(|x| x) |     .filter_map(|x| x) | ||||||
|     .collect(); |     .collect(); | ||||||
| @ -256,36 +253,32 @@ pub fn serialize( | |||||||
| 
 | 
 | ||||||
|       let label_name = build_label_name(&field, &field_attrs); |       let label_name = build_label_name(&field, &field_attrs); | ||||||
| 
 | 
 | ||||||
|       match get_field_type(field) { |       get_field_type(field).and_then(|field| match field { | ||||||
|         Some(FieldType::FieldTypeString) |         FieldType::FieldTypeString | ||||||
|         | Some(FieldType::FieldTypeBool) |         | FieldType::FieldTypeBool | ||||||
|         | Some(FieldType::FieldTypeI8) |         | FieldType::FieldTypeI8 | ||||||
|         | Some(FieldType::FieldTypeU8) |         | FieldType::FieldTypeU8 | ||||||
|         | Some(FieldType::FieldTypeI16) |         | FieldType::FieldTypeI16 | ||||||
|         | Some(FieldType::FieldTypeU16) |         | FieldType::FieldTypeU16 | ||||||
|         | Some(FieldType::FieldTypeI32) |         | FieldType::FieldTypeI32 | ||||||
|         | Some(FieldType::FieldTypeU32) |         | FieldType::FieldTypeU32 | ||||||
|         | Some(FieldType::FieldTypeI64) |         | FieldType::FieldTypeI64 | ||||||
|         | Some(FieldType::FieldTypeU64) |         | FieldType::FieldTypeU64 | ||||||
|         | Some(FieldType::FieldTypeF32) |         | FieldType::FieldTypeF32 | ||||||
|         | Some(FieldType::FieldTypeF64) => { |         | FieldType::FieldTypeF64 => serialize_element(label, label_name, &field_attrs.default), | ||||||
|           serialize_element(label, label_name, &field_attrs.default) |         FieldType::FieldTypeOption { data_type } => match *data_type { | ||||||
|         } |           FieldType::FieldTypeString | ||||||
|         Some(FieldType::FieldTypeOption { data_type }) => { |           | FieldType::FieldTypeBool | ||||||
|           let dt = Box::into_raw(data_type); |           | FieldType::FieldTypeI8 | ||||||
|           match unsafe { dt.as_ref() } { |           | FieldType::FieldTypeU8 | ||||||
|             Some(&FieldType::FieldTypeString) |           | FieldType::FieldTypeI16 | ||||||
|             | Some(&FieldType::FieldTypeBool) |           | FieldType::FieldTypeU16 | ||||||
|             | Some(&FieldType::FieldTypeI8) |           | FieldType::FieldTypeI32 | ||||||
|             | Some(&FieldType::FieldTypeU8) |           | FieldType::FieldTypeU32 | ||||||
|             | Some(&FieldType::FieldTypeI16) |           | FieldType::FieldTypeI64 | ||||||
|             | Some(&FieldType::FieldTypeU16) |           | FieldType::FieldTypeU64 | ||||||
|             | Some(&FieldType::FieldTypeI32) |           | FieldType::FieldTypeF32 | ||||||
|             | Some(&FieldType::FieldTypeU32) |           | FieldType::FieldTypeF64 => { | ||||||
|             | Some(&FieldType::FieldTypeI64) |  | ||||||
|             | Some(&FieldType::FieldTypeU64) |  | ||||||
|             | Some(&FieldType::FieldTypeF32) |  | ||||||
|             | Some(&FieldType::FieldTypeF64) => { |  | ||||||
|             let item_ident = Ident::new("yas_item", Span::call_site()); |             let item_ident = Ident::new("yas_item", Span::call_site()); | ||||||
|             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); |             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); | ||||||
| 
 | 
 | ||||||
| @ -307,7 +300,7 @@ pub fn serialize( | |||||||
|               }) |               }) | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeVec { .. }) => { |           FieldType::FieldTypeVec { .. } => { | ||||||
|             let item_ident = Ident::new("yas_item", Span::call_site()); |             let item_ident = Ident::new("yas_item", Span::call_site()); | ||||||
|             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); |             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); | ||||||
| 
 | 
 | ||||||
| @ -333,7 +326,7 @@ pub fn serialize( | |||||||
|               }) |               }) | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeStruct { .. }) => Some(quote! { |           FieldType::FieldTypeStruct { .. } => Some(quote! { | ||||||
|             if let Some(ref item) = &self.#label { |             if let Some(ref item) = &self.#label { | ||||||
|               writer.set_start_event_name(Some(#label_name.to_string())); |               writer.set_start_event_name(Some(#label_name.to_string())); | ||||||
|               writer.set_skip_start_end(false); |               writer.set_skip_start_end(false); | ||||||
| @ -341,17 +334,14 @@ pub fn serialize( | |||||||
|             } |             } | ||||||
|           }), |           }), | ||||||
|           _ => unimplemented!(), |           _ => unimplemented!(), | ||||||
|           } |         }, | ||||||
|         } |         FieldType::FieldTypeStruct { .. } => Some(quote! { | ||||||
|         Some(FieldType::FieldTypeStruct { .. }) => Some(quote! { |  | ||||||
|           writer.set_start_event_name(Some(#label_name.to_string())); |           writer.set_start_event_name(Some(#label_name.to_string())); | ||||||
|           writer.set_skip_start_end(false); |           writer.set_skip_start_end(false); | ||||||
|           self.#label.serialize(writer)?; |           self.#label.serialize(writer)?; | ||||||
|         }), |         }), | ||||||
|         Some(FieldType::FieldTypeVec { data_type }) => { |         FieldType::FieldTypeVec { data_type } => match *data_type { | ||||||
|           let dt = Box::into_raw(data_type); |           FieldType::FieldTypeString => { | ||||||
|           match unsafe { dt.as_ref() } { |  | ||||||
|             Some(&FieldType::FieldTypeString) => { |  | ||||||
|             let item_ident = Ident::new("yas_item", Span::call_site()); |             let item_ident = Ident::new("yas_item", Span::call_site()); | ||||||
|             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); |             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); | ||||||
| 
 | 
 | ||||||
| @ -361,17 +351,17 @@ pub fn serialize( | |||||||
|               } |               } | ||||||
|             }) |             }) | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeBool) |           FieldType::FieldTypeBool | ||||||
|             | Some(&FieldType::FieldTypeI8) |           | FieldType::FieldTypeI8 | ||||||
|             | Some(&FieldType::FieldTypeU8) |           | FieldType::FieldTypeU8 | ||||||
|             | Some(&FieldType::FieldTypeI16) |           | FieldType::FieldTypeI16 | ||||||
|             | Some(&FieldType::FieldTypeU16) |           | FieldType::FieldTypeU16 | ||||||
|             | Some(&FieldType::FieldTypeI32) |           | FieldType::FieldTypeI32 | ||||||
|             | Some(&FieldType::FieldTypeU32) |           | FieldType::FieldTypeU32 | ||||||
|             | Some(&FieldType::FieldTypeI64) |           | FieldType::FieldTypeI64 | ||||||
|             | Some(&FieldType::FieldTypeU64) |           | FieldType::FieldTypeU64 | ||||||
|             | Some(&FieldType::FieldTypeF32) |           | FieldType::FieldTypeF32 | ||||||
|             | Some(&FieldType::FieldTypeF64) => { |           | FieldType::FieldTypeF64 => { | ||||||
|             let item_ident = Ident::new("yas_item", Span::call_site()); |             let item_ident = Ident::new("yas_item", Span::call_site()); | ||||||
|             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); |             let inner = enclose_formatted_characters_for_value(&item_ident, label_name); | ||||||
| 
 | 
 | ||||||
| @ -381,7 +371,7 @@ pub fn serialize( | |||||||
|               } |               } | ||||||
|             }) |             }) | ||||||
|           } |           } | ||||||
|             Some(&FieldType::FieldTypeOption { .. }) => Some(quote! { |           FieldType::FieldTypeOption { .. } => Some(quote! { | ||||||
|             for item in &self.#label { |             for item in &self.#label { | ||||||
|               if let Some(value) = item { |               if let Some(value) = item { | ||||||
|                 writer.set_start_event_name(None); |                 writer.set_start_event_name(None); | ||||||
| @ -390,23 +380,18 @@ pub fn serialize( | |||||||
|               } |               } | ||||||
|             } |             } | ||||||
|           }), |           }), | ||||||
|             Some(&FieldType::FieldTypeStruct { .. }) => Some(quote! { |           FieldType::FieldTypeStruct { .. } => Some(quote! { | ||||||
|             for item in &self.#label { |             for item in &self.#label { | ||||||
|               writer.set_start_event_name(None); |               writer.set_start_event_name(None); | ||||||
|               writer.set_skip_start_end(false); |               writer.set_skip_start_end(false); | ||||||
|               item.serialize(writer)?; |               item.serialize(writer)?; | ||||||
|             } |             } | ||||||
|           }), |           }), | ||||||
|             Some(&FieldType::FieldTypeVec { .. }) => { |           FieldType::FieldTypeVec { .. } => { | ||||||
|             unimplemented!(); |             unimplemented!(); | ||||||
|           } |           } | ||||||
|             None => { |         }, | ||||||
|               unimplemented!(); |       }) | ||||||
|             } |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|         None => None, |  | ||||||
|       } |  | ||||||
|     }) |     }) | ||||||
|     .filter_map(|x| x) |     .filter_map(|x| x) | ||||||
|     .collect(); |     .collect(); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user