{"record":{"id":"8823bfa72c5a4746","repo":"bevyengine/bevy","slug":"only-enums-are-supported","errorCode":null,"errorMessage":"Only enums are supported","messagePattern":"Only enums are supported","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_derive/src/enum_variant_meta.rs","lineNumber":10,"sourceCode":"use proc_macro::{Span, TokenStream};\nuse quote::quote;\nuse syn::{parse_macro_input, Data, DeriveInput};\n\npub fn derive_enum_variant_meta(input: TokenStream) -> TokenStream {\n    let ast = parse_macro_input!(input as DeriveInput);\n    let variants = match &ast.data {\n        Data::Enum(v) => &v.variants,\n        _ => {\n            return syn::Error::new(Span::call_site().into(), \"Only enums are supported\")\n                .into_compile_error()\n                .into()\n        }\n    };\n\n    let generics = ast.generics;\n    let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();\n\n    let struct_name = &ast.ident;\n    let idents = variants.iter().map(|v| &v.ident);\n    let names = variants.iter().map(|v| v.ident.to_string());\n    let indices = 0..names.len();\n\n    TokenStream::from(quote! {\n        impl #impl_generics #struct_name #ty_generics #where_clause {\n            pub fn enum_variant_index(&self) -> usize {\n                match self {\n                    #(#struct_name::#idents {..} => #indices,)*","sourceCodeStart":1,"sourceCodeEnd":28,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_derive/src/enum_variant_meta.rs#L1-L28","documentation":"Compile-time error from derive_enum_variant_meta: the EnumVariantMeta derive was applied to something other than an enum (a struct or union). The derive generates per-variant metadata, so it only accepts enums.","triggerScenarios":"Thrown at crates/bevy_derive/src/enum_variant_meta.rs:10 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Apply #[derive(EnumVariantMeta)] only to enum types","Use an appropriate derive for struct metadata instead"],"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"}