bevyengine/bevy · error

Relationship can only be derived for structs.

Error message

Relationship can only be derived for structs.

What it means

Compile-time error from derive_relationship: #[derive(Relationship)] was applied to an enum or union. Relationship derives forward to a contained relationship field, so only structs are supported.

Source

Thrown at crates/bevy_ecs/macro_logic/src/component.rs:410

            #relationship_target
        })
    }
    fn derive_relationship(
        &self,
        ast: &DeriveInput,
        bevy_ecs: &Path,
    ) -> Result<Option<TokenStream>> {
        let Some(relationship) = &self.relationship else {
            return Ok(None);
        };
        let Data::Struct(DataStruct {
            fields,
            struct_token,
            ..
        }) = &ast.data
        else {
            return Err(syn::Error::new(
                ast.span(),
                "Relationship can only be derived for structs.",
            ));
        };
        let field = relationship_field(fields, "Relationship", struct_token.span())?;

        let relationship_member = field.ident.clone().map_or(Member::from(0), Member::Named);
        let members = fields
            .members()
            .filter(|member| member != &relationship_member);

        let struct_name = &ast.ident;
        let (impl_generics, type_generics, where_clause) = &ast.generics.split_for_impl();

        let relationship_target = &relationship.relationship_target;
        let allow_self_referential = relationship.allow_self_referential;

        let fqdefault = FQDefault.into_token_stream();

View on GitHub (pinned to 396ca72708)

Solutions

  1. Apply #[derive(Relationship)] only to structs
  2. Restructure the enum as a struct containing the relationship component
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/bevy_ecs/macro_logic/src/component.rs:410 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/879a1fbf18a87d94. Report an issue: GitHub.