(&self)
| 158 | } |
| 159 | |
| 160 | pub fn read_field(&self) -> TokenStream { |
| 161 | let var = &self.private_ident; |
| 162 | match &self.dispatch { |
| 163 | FieldDispatch::Codec { .. } => { |
| 164 | let call = self.codec_call(); |
| 165 | quote! { |
| 166 | let #var = #call::read_field(context)?; |
| 167 | } |
| 168 | } |
| 169 | FieldDispatch::Serializer { .. } => { |
| 170 | let ty = self.value_ty; |
| 171 | if serializer_field_can_use_data_path(self.source.field) { |
| 172 | quote! { |
| 173 | let #var = <#ty as fory_core::Serializer>::fory_read_data(context)?; |
| 174 | } |
| 175 | } else { |
| 176 | let ref_mode = serializer_ref_mode_for_field(self.source.field); |
| 177 | quote! { |
| 178 | let read_type_info = if context.is_compatible() { |
| 179 | fory_core::serializer::util::field_need_read_type_info( |
| 180 | <#ty as fory_core::Serializer>::fory_static_type_id() as u32 |
| 181 | ) |
| 182 | } else { |
| 183 | <#ty as fory_core::Serializer>::fory_is_polymorphic() |
| 184 | }; |
| 185 | let #var = <#ty as fory_core::Serializer>::fory_read( |
| 186 | context, |
| 187 | #ref_mode, |
| 188 | read_type_info |
| 189 | )?; |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | } |
| 194 | } |
| 195 | |
| 196 | pub fn read_with_mode_expr( |
| 197 | &self, |
no test coverage detected