{"record":{"id":"17f1baeb1f2e5be9","repo":"slint-ui/slint","slug":"only-supported-for-structure-with-named-fields","errorCode":null,"errorMessage":"Only supported for structure with named fields","messagePattern":"Only supported for structure with named fields","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"helper_crates/vtable/macro/macro.rs","lineNumber":173,"sourceCode":"    // access to the vtable through the get_vtable() function\n    assert_eq!(animal_vref.get_vtable().LEG_NUMBER, 4);\n    // functions are also added for the #[field_offset] member\n    assert_eq!(*animal_vref.IS_HUNGRY(), false);\n    *animal_vref.IS_HUNGRY_mut() = true;\n}\nassert_eq!(dog.is_hungry, true);\n```\n\n\n*/\n#[proc_macro_attribute]\npub fn vtable(_attr: TokenStream, item: TokenStream) -> TokenStream {\n    let mut input = parse_macro_input!(item as ItemStruct);\n\n    let fields = if let Fields::Named(fields) = &mut input.fields {\n        fields\n    } else {\n        return Error::new(\n            proc_macro2::Span::call_site(),\n            \"Only supported for structure with named fields\",\n        )\n        .to_compile_error()\n        .into();\n    };\n\n    let vtable_name = input.ident.to_string();\n    if !vtable_name.ends_with(\"VTable\") {\n        return Error::new(input.ident.span(), \"The structure does not ends in 'VTable'\")\n            .to_compile_error()\n            .into();\n    }\n\n    let trait_name = Ident::new(&vtable_name[..vtable_name.len() - 6], input.ident.span());\n    let to_name = quote::format_ident!(\"{}TO\", trait_name);\n    let module_name = quote::format_ident!(\"{}_vtable_mod\", trait_name);\n    let static_vtable_macro_name = quote::format_ident!(\"{}_static\", vtable_name);","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/slint-ui/slint/blob/3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016/helper_crates/vtable/macro/macro.rs#L155-L191","documentation":"Error \"Only supported for structure with named fields\" thrown in slint-ui/slint.","triggerScenarios":"Thrown at helper_crates/vtable/macro/macro.rs:173 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Apply the vtable macro only to structs with named fields.","Convert tuple structs or units structs to named-field structs."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016","analyzedAt":"2026-08-19T23:23:16.610Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}