{"record":{"id":"bcce59da75d8375d","repo":"diesel-rs/diesel","slug":"only-enums-with-one-field-per-variant-are-supporte","errorCode":null,"errorMessage":"Only enums with one field per variant are supported","messagePattern":"Only enums with one field per variant are supported","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"diesel_derives/src/multiconnection.rs","lineNumber":20,"sourceCode":"use syn::DeriveInput;\n\nstruct ConnectionVariant<'a> {\n    ty: &'a syn::Type,\n    name: &'a syn::Ident,\n}\n\npub fn derive(item: DeriveInput) -> TokenStream {\n    let helper = MultiHelper::from_derive_input(&item);\n    if let syn::Data::Enum(e) = item.data {\n        let connection_types = e\n            .variants\n            .iter()\n            .map(|v| match &v.fields {\n                syn::Fields::Unnamed(f) if f.unnamed.len() == 1 => ConnectionVariant {\n                    ty: &f.unnamed.first().unwrap().ty,\n                    name: &v.ident,\n                },\n                _ => panic!(\"Only enums with one field per variant are supported\"),\n            })\n            .collect::<Vec<_>>();\n        let backend = generate_backend(&connection_types, &helper);\n        let query_builder = generate_querybuilder(&connection_types, &helper);\n        let bind_collector = generate_bind_collector(&connection_types, &helper);\n        let row = generate_row(&connection_types, &helper);\n        let connection = generate_connection_impl(&connection_types, &item.ident, &helper);\n\n        quote::quote! {\n            mod multi_connection_impl {\n                use super::*;\n\n                mod backend {\n                    use super::*;\n                    #backend\n                }\n\n                mod query_builder {","sourceCodeStart":2,"sourceCodeEnd":38,"githubUrl":"https://github.com/diesel-rs/diesel/blob/6fa6ed01b24b24248ab2a611698d0a7c6a2e9120/diesel_derives/src/multiconnection.rs#L2-L38","documentation":"The MultiConnection derive only accepts enum variants that wrap exactly one connection type as a single unnamed field. The offending input is the variant shape — a unit variant, named fields, or multiple fields were supplied instead.","triggerScenarios":"Thrown at diesel_derives/src/multiconnection.rs:20 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Define every variant as a single-field tuple variant","Do not use struct variants or unit variants for backends","Keep one connection type per variant"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6fa6ed01b24b24248ab2a611698d0a7c6a2e9120","analyzedAt":"2026-09-07T01:50:13.074Z","contentChangedAt":"2026-09-07T01:50:13.074Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}