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),
}