{"record":{"id":"879a1fbf18a87d94","repo":"bevyengine/bevy","slug":"relationship-can-only-be-derived-for-structs","errorCode":null,"errorMessage":"Relationship can only be derived for structs.","messagePattern":"Relationship can only be derived for structs\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_ecs/macro_logic/src/component.rs","lineNumber":410,"sourceCode":"\n            #relationship_target\n        })\n    }\n    fn derive_relationship(\n        &self,\n        ast: &DeriveInput,\n        bevy_ecs: &Path,\n    ) -> Result<Option<TokenStream>> {\n        let Some(relationship) = &self.relationship else {\n            return Ok(None);\n        };\n        let Data::Struct(DataStruct {\n            fields,\n            struct_token,\n            ..\n        }) = &ast.data\n        else {\n            return Err(syn::Error::new(\n                ast.span(),\n                \"Relationship can only be derived for structs.\",\n            ));\n        };\n        let field = relationship_field(fields, \"Relationship\", struct_token.span())?;\n\n        let relationship_member = field.ident.clone().map_or(Member::from(0), Member::Named);\n        let members = fields\n            .members()\n            .filter(|member| member != &relationship_member);\n\n        let struct_name = &ast.ident;\n        let (impl_generics, type_generics, where_clause) = &ast.generics.split_for_impl();\n\n        let relationship_target = &relationship.relationship_target;\n        let allow_self_referential = relationship.allow_self_referential;\n\n        let fqdefault = FQDefault.into_token_stream();","sourceCodeStart":392,"sourceCodeEnd":428,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_ecs/macro_logic/src/component.rs#L392-L428","documentation":"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.","triggerScenarios":"Thrown at crates/bevy_ecs/macro_logic/src/component.rs:410 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Apply #[derive(Relationship)] only to structs","Restructure the enum as a struct containing the relationship component"],"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"}