fn record_meta_static_var(record: &RecordItem) -> syn::Result<TokenStream> { let name = record.name(); let docstring = record.docstring(); let module_path = mod_path()?; let fields_len = try_metadata_value_from_usize(
record.struct_().fields.len(), "UniFFI limits structs to 256 fields",
)?;
let concat_fields: TokenStream = record
.struct_()
.fields
.iter()
.map(|f| { let attrs = f
.attrs
.parse_uniffi_attr_args::<FieldAttributeArguments>()?;
let name = ident_to_string(f.ident.as_ref().unwrap()); let docstring = extract_docstring(&f.attrs)?; let default = default_value_metadata_calls(&attrs.default)?; let type_id_meta = ffiops::type_id_meta(&f.ty);
// Note: fields need to implement both `Lower` and `Lift` to be used in a record. The // TYPE_ID_META should be the same for both traits.
Ok(quote! {
.concat_str(#name)
.concat(#type_id_meta) #default
.concat_long_str(#docstring)
})
})
.collect::<syn::Result<_>>()?;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.