Variant Payloads
๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง variants
๋ฅผ ์ด๊ฑฐํ์ ์ ์ํ๊ณ , match
๊ตฌ๋ฌธ์ ์ด์ฉํด ์ด๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค:
You can define richer enums where the variants carry data. You can then use the
match
statement to extract the data from each variant:
enum WebEvent { PageLoad, // Variant without payload KeyPress(char), // Tuple struct variant Click { x: i64, y: i64 }, // Full struct variant } #[rustfmt::skip] fn inspect(event: WebEvent) { match event { WebEvent::PageLoad => println!("page loaded"), WebEvent::KeyPress(c) => println!("pressed '{c}'"), WebEvent::Click { x, y } => println!("clicked at x={x}, y={y}"), } } fn main() { let load = WebEvent::PageLoad; let press = WebEvent::KeyPress('x'); let click = WebEvent::Click { x: 20, y: 80 }; inspect(load); inspect(press); inspect(click); }
์ญ์ฃผ
- ์ด๊ฑฐํ ์์์ ๊ฐ์ ํฌํจํ๋๋ก(์์) ์ ์ธํด์ match ๋ฌธ์์ ์ด๊ฑฐํ์ ํ์ ์ ๋ฐ๋ผ ๋์ํ๋๋ก ๋ง๋ค์ด์ง ์์์ ๋๋ค