{"record":{"id":"1ede2add951304b5","repo":"bevyengine/bevy","slug":"entityevent-derive-expected-a-field-name-entity","errorCode":null,"errorMessage":"EntityEvent derive expected a field name 'entity' or a field annotated with #[event_target].","messagePattern":"EntityEvent derive expected a field name 'entity' or a field annotated with #\\[event_target\\]\\.","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"crates/bevy_ecs/macros/src/event.rs","lineNumber":185,"sourceCode":"/// or the field with the name \"entity\".\nfn get_event_target_field(ast: &DeriveInput) -> Result<Member> {\n    let Data::Struct(DataStruct { fields, .. }) = &ast.data else {\n        return Err(syn::Error::new(\n            ast.span(),\n            \"EntityEvent can only be derived for structs.\",\n        ));\n    };\n    match fields {\n        Fields::Named(fields) => fields.named.iter().find_map(|field| {\n            if field.ident.as_ref().is_some_and(|i| i == \"entity\") || field\n                .attrs\n                .iter()\n                .any(|attr| attr.path().is_ident(EVENT_TARGET)) {\n                    Some(Member::Named(field.ident.clone()?))\n                } else {\n                    None\n                }\n        }).ok_or(syn::Error::new(\n            fields.span(),\n            \"EntityEvent derive expected a field name 'entity' or a field annotated with #[event_target].\"\n        )),\n        Fields::Unnamed(fields) if fields.unnamed.len() == 1 => Ok(Member::Unnamed(Index::from(0))),\n        Fields::Unnamed(fields) => fields.unnamed.iter().enumerate().find_map(|(index, field)| {\n                if field\n                    .attrs\n                    .iter()\n                    .any(|attr| attr.path().is_ident(EVENT_TARGET)) {\n                        Some(Member::Unnamed(Index::from(index)))\n                    } else {\n                        None\n                    }\n            })\n            .ok_or(syn::Error::new(\n                fields.span(),\n                \"EntityEvent derive expected unnamed structs with one field or with a field annotated with #[event_target].\",\n            )),","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_ecs/macros/src/event.rs#L167-L203","documentation":"Compile error from get_event_target_field: the struct has named fields but none is named `entity` and none carries #[event_target], so find_map returned None and ok_or raised this sentinel. The field selection heuristic (name match or attribute) found no candidate.","triggerScenarios":"Thrown at crates/bevy_ecs/macros/src/event.rs:185 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename a field to `entity`: struct E { entity: Entity, .. }","Annotate the target field explicitly: #[event_target] pub target: Entity","Restructure as a single-field tuple struct: struct E(Entity);"],"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-14T00:17:10.932Z"}