From 0193855bac1dfb62994377e29e7a9f2e46d9eab0 Mon Sep 17 00:00:00 2001 From: mxsm Date: Sun, 1 Dec 2024 14:26:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[ISSUE=20#1476]=E2=99=BB=EF=B8=8FRefactor?= =?UTF-8?q?=20derive=20RequestHeaderCodec=20parse=20logic=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rocketmq-macros/src/request_header_custom.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/rocketmq-macros/src/request_header_custom.rs b/rocketmq-macros/src/request_header_custom.rs index e2b85654..d16b4fa1 100644 --- a/rocketmq-macros/src/request_header_custom.rs +++ b/rocketmq-macros/src/request_header_custom.rs @@ -65,13 +65,17 @@ pub(super) fn request_header_codec_inner( &format!("{}", field_name).to_ascii_uppercase(), field_name.span(), ); + let type_name = if let Some(value) = &has_option { + get_type_name(*value) + } else { + get_type_name(&field.ty) + }; ( quote! { const #static_name: &'static str = #camel_case_name; }, ( - if let Some(value) = has_option { - let type_name = get_type_name(value); + if let Some(_) = has_option { if type_name == "CheetahString" { quote! { if let Some(ref value) = self.#field_name { @@ -92,7 +96,7 @@ pub(super) fn request_header_codec_inner( } } else { quote! { - if let Some(value) = self.#field_name { + if let Some(ref value) = self.#field_name { map.insert ( cheetah_string::CheetahString::from_static_str(Self::#static_name), cheetah_string::CheetahString::from_string(value.to_string()) @@ -101,7 +105,6 @@ pub(super) fn request_header_codec_inner( } } } else { - let type_name = get_type_name(&field.ty); if type_name == "CheetahString" { quote! { map.insert ( @@ -127,7 +130,6 @@ pub(super) fn request_header_codec_inner( }, // build FromMap impl if let Some(value) = has_option { - let type_name = get_type_name(value); if type_name == "CheetahString" || type_name == "String" { if required { quote! { @@ -161,7 +163,6 @@ pub(super) fn request_header_codec_inner( } } else { let types = &field.ty; - let type_name = get_type_name(types); if type_name == "CheetahString" || type_name == "String" { if required { quote! { From adf4c7861443216c4cc53c6ae2e749fa5ddd2cbf Mon Sep 17 00:00:00 2001 From: mxsm Date: Sun, 1 Dec 2024 14:33:51 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[ISSUE=20#1476]=E2=99=BB=EF=B8=8FRefactor?= =?UTF-8?q?=20derive=20RequestHeaderCodec=20parse=20logic=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rocketmq-macros/src/request_header_custom.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rocketmq-macros/src/request_header_custom.rs b/rocketmq-macros/src/request_header_custom.rs index d16b4fa1..ab599311 100644 --- a/rocketmq-macros/src/request_header_custom.rs +++ b/rocketmq-macros/src/request_header_custom.rs @@ -66,7 +66,7 @@ pub(super) fn request_header_codec_inner( field_name.span(), ); let type_name = if let Some(value) = &has_option { - get_type_name(*value) + get_type_name(value) } else { get_type_name(&field.ty) }; @@ -75,7 +75,7 @@ pub(super) fn request_header_codec_inner( const #static_name: &'static str = #camel_case_name; }, ( - if let Some(_) = has_option { + if has_option.is_some() { if type_name == "CheetahString" { quote! { if let Some(ref value) = self.#field_name { @@ -104,8 +104,7 @@ pub(super) fn request_header_codec_inner( } } } - } else { - if type_name == "CheetahString" { + } else if type_name == "CheetahString" { quote! { map.insert ( cheetah_string::CheetahString::from_static_str(Self::#static_name), @@ -127,7 +126,7 @@ pub(super) fn request_header_codec_inner( ); } } - }, + , // build FromMap impl if let Some(value) = has_option { if type_name == "CheetahString" || type_name == "String" {