⭐️ An enum is a single type. It contains variants, which are possible values of the enum at a given time. For example,
enumDay {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}// Day is the enum// Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday are the variants
⭐️ Variants can be accessed through :: notation , ex. Day::Sunday
⭐️ Each enum variant can have,
no data (unit variant)
unnamed ordered data (tuple variant)
named data (struct variant)
enumFlashMessage {Success, //a unit variantWarning{ category:i32, message:String }, //a struct variantError(String) //a tuple variant}fnmain() {letmut form_status =FlashMessage::Success;print_flash_message(form_status); form_status =FlashMessage::Warning {category:2, message:String::from("Field X is required")};print_flash_message(form_status); form_status =FlashMessage::Error(String::from("Connection Error"));print_flash_message(form_status);}fnprint_flash_message(m :FlashMessage) {// pattern matching with enummatch m {FlashMessage::Success=>println!("Form Submitted correctly"),FlashMessage::Warning {category, message} =>//Destructure, should use same field namesprintln!("Warning : {} - {}", category, message),FlashMessage::Error(msg) =>println!("Error : {}", msg) }}