Skip to main content

E0024: Enum Payload Mismatch

The payload you provided for an enum variant doesn't match its definition.

Example

enum Message {
Quit,
Move { x: i64, y: i64 },
Write(i64),
}

fn main() {
let m = Message::Quit(42); // Error: variant `Message::Quit` expects no payload but a tuple with 1 value provided
}
enum Message {
Quit,
Move { x: i64, y: i64 },
Write(i64),
}

fn main() {
let m = Message::Write; // Error: variant `Message::Write` expects a tuple with 1 value but no payload provided
}

How to fix

Match the variant's expected payload:

enum Message {
Quit,
Move { x: i64, y: i64 },
Write(i64),
}

fn main() {
let a = Message::Quit; // OK: unit variant
let b = Message::Move { x: 1, y: 2 }; // OK: struct variant
let c = Message::Write(42); // OK: tuple variant
}