{"record":{"id":"04628d84caecd9c8","repo":"bevyengine/bevy","slug":"deriving-template-for-enums-requires-picking-a-def","errorCode":null,"errorMessage":"Deriving Template for enums requires picking a default variant using #[default]","messagePattern":"Deriving Template for enums requires picking a default variant using #\\[default\\]","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_ecs/macros/src/template.rs","lineNumber":270,"sourceCode":"                            quote! {#template_ident::#variant_ident => #template_ident::#variant_ident},\n                        );\n                        if is_default {\n                            variant_default_ident = Some(quote! {\n                                Self::#variant_ident\n                            });\n                        }\n                        variant_defaults.push(quote! {\n                            /// Default value for this variant, generated by a `FromTemplate` derive.\n                            #type_visibility fn #variant_default_name() -> Self {\n                                Self::#variant_ident\n                            }\n                        });\n                    }\n                }\n            }\n\n            if variant_default_ident.is_none() {\n                panic!(\"Deriving Template for enums requires picking a default variant using #[default]\");\n            }\n\n            quote! {\n                #[allow(missing_docs)]\n                #type_visibility enum #template_ident #type_generics #where_clause {\n                    #(#variant_definitions,)*\n                }\n\n                impl #impl_generics #template_ident #type_generics #where_clause {\n                    #(#variant_defaults)*\n                }\n\n                impl #impl_generics #bevy_ecs::template::Template for #template_ident #type_generics #where_clause {\n                    type Output = #type_ident #type_generics;\n                    fn build_template(&self, context: &mut #bevy_ecs::template::TemplateContext) -> #bevy_ecs::error::Result<Self::Output> {\n                        #bevy_ecs::error::Result::Ok(match self {\n                            #(#variant_builds,)*\n                        })","sourceCodeStart":252,"sourceCodeEnd":288,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_ecs/macros/src/template.rs#L252-L288","documentation":"Compile error from derive_from_template: after processing all enum variants, no variant carried the #[default] attribute, so variant_default_ident stayed None. Template derives require an explicit default variant for enums; this sentinel reports the missing designation.","triggerScenarios":"Thrown at crates/bevy_ecs/macros/src/template.rs:270 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add #[default] to the desired enum variant","Convert to a struct if a single Template shape suffices","Implement Default/FromTemplate manually instead of deriving"],"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"}