tracel-ai/burn · error
Only struct and enum can be derived
Error message
Only struct and enum can be derived
What it means
Derive-macro input guard: `parse_asm` (part of the Config derive) only implements analyzers for structs and enums; a union passed to `#[derive(Config)]` reaches the `Data::Union` arm and panics at macro-expansion time. The failing input is the union item in the user's source code being derived.
Source
Thrown at crates/burn-derive/src/config/analyzer.rs:85
}
fn create_enum_analyzer(&self, name: Ident, data: syn::DataEnum) -> ConfigEnumAnalyzer {
ConfigEnumAnalyzer::new(name, data)
}
}
enum ConfigType {
Struct(Vec<Field>),
Enum(syn::DataEnum),
}
fn parse_asm(ast: &syn::DeriveInput) -> ConfigType {
match &ast.data {
syn::Data::Struct(struct_data) => {
ConfigType::Struct(struct_data.fields.clone().into_iter().collect())
}
syn::Data::Enum(enum_data) => ConfigType::Enum(enum_data.clone()),
syn::Data::Union(_) => panic!("Only struct and enum can be derived"),
}
}
View on GitHub (pinned to d16f7ba2ed)
Solutions
- Apply the Module derive only to structs.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/burn-derive/src/config/analyzer.rs:85 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tracel-ai/burn@d16f7ba2ed (2026-09-05).
Data as JSON: /api/errors/f65e6bf7b672b243.
Report an issue: GitHub.