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

Function get_source_fields_loop_ts

rust/fory-derive/src/object/read.rs:87–130  ·  view source on GitHub ↗
(source_fields: &[SourceField<'_>])

Source from the content-addressed store, hash-verified

85}
86
87fn get_source_fields_loop_ts(source_fields: &[SourceField<'_>]) -> TokenStream {
88 let bindings = match build_bindings(source_fields) {
89 Ok(bindings) => bindings,
90 Err(err) => return err.to_compile_error(),
91 };
92 let read_fields_ts: Vec<_> = bindings
93 .iter()
94 .map(|binding| match binding {
95 FieldBinding::Codec(binding) => {
96 let base = binding.read_field();
97 if is_debug_enabled() {
98 let struct_name = get_struct_name().expect("struct context not set");
99 let struct_name_lit =
100 syn::LitStr::new(&struct_name, proc_macro2::Span::call_site());
101 let field_name_lit = syn::LitStr::new(
102 &binding.source.field_name,
103 proc_macro2::Span::call_site(),
104 );
105 let private_ident = &binding.private_ident;
106 quote! {
107 fory_core::serializer::struct_::struct_before_read_field(
108 #struct_name_lit,
109 #field_name_lit,
110 context,
111 );
112 #base
113 fory_core::serializer::struct_::struct_after_read_field(
114 #struct_name_lit,
115 #field_name_lit,
116 (&#private_ident) as &dyn ::std::any::Any,
117 context,
118 );
119 }
120 } else {
121 base
122 }
123 }
124 FieldBinding::Skipped(binding) => binding.read_default(),
125 })
126 .collect();
127 quote! {
128 #(#read_fields_ts)*
129 }
130}
131
132pub fn gen_read_data(source_fields: &[SourceField<'_>]) -> TokenStream {
133 let fields: Vec<&Field> = source_fields.iter().map(|sf| sf.field).collect();

Callers 1

gen_read_dataFunction · 0.85

Calls 6

build_bindingsFunction · 0.85
is_debug_enabledFunction · 0.85
get_struct_nameFunction · 0.85
read_defaultMethod · 0.80
mapMethod · 0.45
read_fieldMethod · 0.45

Tested by

no test coverage detected