Rust

Enum with Data + match

admin by @admin ADMIN
Jun 19, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Rust enums are full sum types — each variant can carry its own data. `match` is exhaustive: leave a variant unhandled and the compiler refuses to build.
Rust
Raw
enum Event {
    Click  { x: i32, y: i32 },
    Scroll(f64),
    KeyPress(char),
    Quit,
}

fn handle(event: Event) {
    match event {
        Event::Click { x, y }   => println!("click at ({x}, {y})"),
        Event::Scroll(delta)    => println!("scrolled {delta:+.1}"),
        Event::KeyPress(c)      => println!("key: {c}"),
        Event::Quit             => println!("bye"),
        // Adding a new variant later forces every match site to update.
    }
}

fn main() {
    handle(Event::Click { x: 10, y: 20 });
    handle(Event::Scroll(-3.5));
    handle(Event::KeyPress('q'));
    handle(Event::Quit);
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.