bevyengine/bevy · error
Deriving Template for enums requires picking a default varia
Error message
Deriving Template for enums requires picking a default variant using #[default]
What it means
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.
Source
Thrown at crates/bevy_ecs/macros/src/template.rs:270
quote! {#template_ident::#variant_ident => #template_ident::#variant_ident},
);
if is_default {
variant_default_ident = Some(quote! {
Self::#variant_ident
});
}
variant_defaults.push(quote! {
/// Default value for this variant, generated by a `FromTemplate` derive.
#type_visibility fn #variant_default_name() -> Self {
Self::#variant_ident
}
});
}
}
}
if variant_default_ident.is_none() {
panic!("Deriving Template for enums requires picking a default variant using #[default]");
}
quote! {
#[allow(missing_docs)]
#type_visibility enum #template_ident #type_generics #where_clause {
#(#variant_definitions,)*
}
impl #impl_generics #template_ident #type_generics #where_clause {
#(#variant_defaults)*
}
impl #impl_generics #bevy_ecs::template::Template for #template_ident #type_generics #where_clause {
type Output = #type_ident #type_generics;
fn build_template(&self, context: &mut #bevy_ecs::template::TemplateContext) -> #bevy_ecs::error::Result<Self::Output> {
#bevy_ecs::error::Result::Ok(match self {
#(#variant_builds,)*
})View on GitHub (pinned to 396ca72708)
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
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/bevy_ecs/macros/src/template.rs:270 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/04628d84caecd9c8.
Report an issue: GitHub.