bevyengine/bevy · error · syn::Error
EntityEvent derive expected unnamed structs with one field o
Error message
EntityEvent derive expected unnamed structs with one field or with a field annotated with #[event_target].
What it means
Compile error from get_event_target_field: the struct is a tuple struct with multiple fields and none of them is annotated #[event_target], so the enumerated search over unnamed fields yielded no Member. The single-field fast path did not apply because unnamed.len() > 1.
Source
Thrown at crates/bevy_ecs/macros/src/event.rs:200
} else {
None
}
}).ok_or(syn::Error::new(
fields.span(),
"EntityEvent derive expected a field name 'entity' or a field annotated with #[event_target]."
)),
Fields::Unnamed(fields) if fields.unnamed.len() == 1 => Ok(Member::Unnamed(Index::from(0))),
Fields::Unnamed(fields) => fields.unnamed.iter().enumerate().find_map(|(index, field)| {
if field
.attrs
.iter()
.any(|attr| attr.path().is_ident(EVENT_TARGET)) {
Some(Member::Unnamed(Index::from(index)))
} else {
None
}
})
.ok_or(syn::Error::new(
fields.span(),
"EntityEvent derive expected unnamed structs with one field or with a field annotated with #[event_target].",
)),
Fields::Unit => Err(syn::Error::new(
fields.span(),
"EntityEvent derive does not work on unit structs. Your type must have a field to store the `Entity` target, such as `Attack(Entity)` or `Attack { entity: Entity }`.",
)),
}
}
View on GitHub (pinned to 396ca72708)
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/bevy_ecs/macros/src/event.rs:200 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20).
Data as JSON: /api/errors/8fdd806836b5214c.
Report an issue: GitHub.