slint-ui/slint · error · syn::Error
Only supported for structure with named fields
Error message
Only supported for structure with named fields
What it means
Error "Only supported for structure with named fields" thrown in slint-ui/slint.
Source
Thrown at helper_crates/vtable/macro/macro.rs:173
// access to the vtable through the get_vtable() function
assert_eq!(animal_vref.get_vtable().LEG_NUMBER, 4);
// functions are also added for the #[field_offset] member
assert_eq!(*animal_vref.IS_HUNGRY(), false);
*animal_vref.IS_HUNGRY_mut() = true;
}
assert_eq!(dog.is_hungry, true);
```
*/
#[proc_macro_attribute]
pub fn vtable(_attr: TokenStream, item: TokenStream) -> TokenStream {
let mut input = parse_macro_input!(item as ItemStruct);
let fields = if let Fields::Named(fields) = &mut input.fields {
fields
} else {
return Error::new(
proc_macro2::Span::call_site(),
"Only supported for structure with named fields",
)
.to_compile_error()
.into();
};
let vtable_name = input.ident.to_string();
if !vtable_name.ends_with("VTable") {
return Error::new(input.ident.span(), "The structure does not ends in 'VTable'")
.to_compile_error()
.into();
}
let trait_name = Ident::new(&vtable_name[..vtable_name.len() - 6], input.ident.span());
let to_name = quote::format_ident!("{}TO", trait_name);
let module_name = quote::format_ident!("{}_vtable_mod", trait_name);
let static_vtable_macro_name = quote::format_ident!("{}_static", vtable_name);View on GitHub (pinned to 3fd8f2ec03)
Solutions
- Apply the vtable macro only to structs with named fields.
- Convert tuple structs or units structs to named-field structs.
When it happens
Trigger: Thrown at helper_crates/vtable/macro/macro.rs:173 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of slint-ui/slint@3fd8f2ec03 (2026-08-19).
Data as JSON: /api/errors/17f1baeb1f2e5be9.
Report an issue: GitHub.