match Enum
match
cực kỳ mạnh và được dùng trong Rust phổ biến.
Ví dụ sau là cách để kiểm tra một giá trị enum là variant nào.
enum Coin { Penny, Nickel, Dime, Quarter, } fn value_in_cents(coin: Coin) -> u8 { match coin { Coin::Penny => 1, Coin::Nickel => 5, Coin::Dime => 10, Coin::Quarter => 25, } } fn main() {}
match
còn có thể trích xuất các giá trị từ tuple variant hoặc struct variant.
#![allow(unused)] fn main() { enum FlashMessage { Success, // unit variant Error(String), // tuple variant Warning { category: i32, message: String }, // struct variant } fn format_message(message: FlashMessage) -> String { match message { FlashMessage::Success => "success".to_string(), FlashMessage::Error(err) => format!("My error: {}", err), FlashMessage::Warning{ category, message } => format!("Warn: {} (category: {})", message, category), } } let m = format_message(FlashMessage::Error("something went wrong".to_string())); println!("{m}"); }