MCPcopy Create free account
hub / github.com/apache/fory / read_field

Method read_field

rust/fory-derive/src/object/field_codec.rs:160–194  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

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,

Callers 3

gen_read_variant_fieldsFunction · 0.45

Calls 3

codec_callMethod · 0.80

Tested by

no test coverage detected