What Is the Difference Between Enums in Rust vs C/C++?

Rust enums are data-holding algebraic types with safety guarantees, unlike C/C++ enums which are simple integer aliases.

Rust enums are algebraic data types that can hold data and are memory-safe, whereas C/C++ enums are simple integer aliases with no data storage. Rust enums require exhaustive pattern matching with match, while C/C++ enums rely on manual switch statements that can silently fail if cases are missing.

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

let msg = Message::Write(String::from("hello"));
match msg {
    Message::Quit => println!("Quit"),
    Message::Move { x, y } => println!("Move to {}, {}", x, y),
    Message::Write(text) => println!("Text message: {}", text),
}