{"record":{"id":"718ed2cda6464baa","repo":"bevyengine/bevy","slug":"deref-kind-cannot-be-derived-on-field-less-struc","errorCode":null,"errorMessage":"{deref_kind} cannot be derived on field-less structs","messagePattern":"(.+?) cannot be derived on field-less structs","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_derive/src/derefs.rs","lineNumber":58,"sourceCode":"        }\n    };\n    let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();\n\n    TokenStream::from(quote! {\n        impl #impl_generics ::core::ops::DerefMut for #ident #ty_generics #where_clause {\n            fn deref_mut(&mut self) -> &mut Self::Target {\n                &mut self.#field_member\n            }\n        }\n    })\n}\n\nfn get_deref_field(ast: &DeriveInput, is_mut: bool) -> syn::Result<(Member, &Type)> {\n    let deref_kind = if is_mut { DEREF_MUT } else { DEREF };\n    let deref_attr_str = format!(\"`#[{DEREF_ATTR}]`\");\n\n    match &ast.data {\n        Data::Struct(data_struct) if data_struct.fields.is_empty() => Err(syn::Error::new(\n            Span::call_site().into(),\n            format!(\"{deref_kind} cannot be derived on field-less structs\"),\n        )),\n        Data::Struct(data_struct) if data_struct.fields.len() == 1 => {\n            let field = data_struct.fields.iter().next().unwrap();\n            let member = to_member(field, 0);\n            Ok((member, &field.ty))\n        }\n        Data::Struct(data_struct) => {\n            let mut selected_field: Option<(Member, &Type)> = None;\n            for (index, field) in data_struct.fields.iter().enumerate() {\n                for attr in &field.attrs {\n                    if !attr.meta.path().is_ident(DEREF_ATTR) {\n                        continue;\n                    }\n\n                    attr.meta.require_path_only()?;\n","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_derive/src/derefs.rs#L40-L76","documentation":"Compile-time syn error from get_deref_field: the derive input for #[derive(Deref)]/#[derive(DerefMut)] is a struct with no fields, so there is no field to dereference to. The derive macro requires exactly one target field (named or tuple field) to implement Deref/DerefMut.","triggerScenarios":"Thrown at crates/bevy_derive/src/derefs.rs:58 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a field to the struct for the deref target","Remove the derive from field-less marker types"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"396ca727080776bd313bb892423b7d94e03b81b4","analyzedAt":"2026-08-20T16:12:39.808Z","contentChangedAt":"2026-08-20T16:12:39.808Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}