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

  1. 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.