Enum is a data type with mutiple possible variants. To declare an enum, write enum
and use a code block with the options, separated by commas. These options are called as variants.
Define Enum
#[derive(Debug)]
enum PaymentStatus{
Succeeded,
Processing,
Fail,
}
Main Block
fn main() {
let payment_status = PaymentStatus::Processing;
println!("Enum - {:?}", payment_status);
}
Output
Enum - Processing
Match Operator
Match operator compares a value to the series patterns to determine which code to execute.
fn main() {
let payment_status = PaymentStatus::Processing;
println!("Enum - {:?}", payment_status);
//let status = {};
match payment_status{
PaymentStatus::Succeeded => println!("Payment compelte." ),
PaymentStatus::Processing => println!("Payment processing."),
PaymentStatus::Fail => println!("Payment failed! Please try again!"),
}
}
Output
Enum - Processing
Payment processing.
Enum Methods
Enum methods are plaved in the enum implementation i.e. imp <<Enum>>
Here we use wild card case ie. _ or the default match case.
Similar to a switch statement, Match operator compares a given value to a series of patterns to determine which code to execute.
impl PaymentStatus {
fn after_payment_action(&self) -> &str{
match *self {
PaymentStatus::Succeeded => "UpdateERP",
PaymentStatus::Processing => "Wait",
PaymentStatus::Fail => "Block",
_ => "NoChange"
}
}
}
fn main() {
let payment_status = PaymentStatus::Processing;
println!("Enum - {:?}", payment_status);
let action = payment_status.after_payment_action();
println!("After payment request action --> {}", action )
}
Output
Enum - Processing
After payment request action --> Wait