{"record":{"id":"64f0c82cd0276760","repo":"bevyengine/bevy","slug":"cannot-have-multiple-default-variants","errorCode":null,"errorMessage":"Cannot have multiple default variants","messagePattern":"Cannot have multiple default variants","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/bevy_ecs/macros/src/template.rs","lineNumber":149,"sourceCode":"            for variant in &data_enum.variants {\n                let result = match struct_impl(&variant.fields, &bevy_ecs, true) {\n                    Ok(result) => result,\n                    Err(err) => return err.into_compile_error().into(),\n                };\n                let StructImpl {\n                    template_fields,\n                    template_field_builds,\n                    template_field_defaults,\n                    template_field_clones,\n                    ..\n                } = result;\n\n                let is_default = variant\n                    .attrs\n                    .iter()\n                    .any(|a| a.path().is_ident(TEMPLATE_DEFAULT_ATTRIBUTE));\n                if is_default && variant_default_ident.is_some() {\n                    panic!(\"Cannot have multiple default variants\");\n                }\n                let variant_ident = &variant.ident;\n                let variant_name_lower = variant_ident.to_string().to_lowercase();\n                let variant_default_name = format_ident!(\"default_{}\", variant_name_lower);\n                match &variant.fields {\n                    Fields::Named(fields) => {\n                        variant_definitions.push(quote! {\n                            #variant_ident {\n                                #(#template_fields,)*\n                            }\n                        });\n                        let field_idents = fields.named.iter().map(|f| &f.ident);\n                        variant_builds.push(quote! {\n                            // TODO: proper assignments here\n                            #template_ident::#variant_ident {\n                                #(#field_idents,)*\n                            } => {\n                                #type_ident::#variant_ident {","sourceCodeStart":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_ecs/macros/src/template.rs#L131-L167","documentation":"Compile error from derive_from_template: while scanning enum variants, more than one was marked #[default]. Template codegen needs a single unambiguous default variant to generate the Default/FromTemplate impls, and this guard fires when the count exceeds one.","triggerScenarios":"Thrown at crates/bevy_ecs/macros/src/template.rs:149 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep only one #[default] variant per enum","Pick the intended default and remove the attribute from the others","Implement Default manually if multiple fallback variants are genuinely needed"],"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"}