์ด๊ฑฐํ
enum
ํค์๋๋ ๋ช๊ฐ์ง ์ ํ(variant)์ผ๋ก ํํ๋๋ ํ์
์ ์์ฑํฉ๋๋ค:
fn generate_random_number() -> i32 { // Implementation based on https://xkcd.com/221/ 4 // Chosen by fair dice roll. Guaranteed to be random. } #[derive(Debug)] enum CoinFlip { Heads, Tails, } fn flip_coin() -> CoinFlip { let random_number = generate_random_number(); if random_number % 2 == 0 { return CoinFlip::Heads; } else { return CoinFlip::Tails; } } fn main() { println!("You got: {:?}", flip_coin()); }
ํค ํฌ์ธํธ:
- ์ด๊ฑฐํ์ ๊ฐ๋ค์ ์งํฉ์ ํ๋์ ํ์ ์ผ๋ก ํํํ ์ ์๊ฒ ํฉ๋๋ค
- ์์
CoinFlip
์ด๊ฑฐํ ํ์ ์Heads
์Tail
๋ ๊ฐ์ง variant๋ฅผ ๊ฐ์ง๋๋ค. ์ด๊ฑฐํ ํ์ ์ variant๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํฉ๋๋ค. - ๊ตฌ์กฐ์ฒด์ ์ด๊ฑฐํ์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค:
- ๊ตฌ์กฐ์ฒด๋ ์ด๊ฑฐํ ๋ชจ๋, ํ๋๊ฐ ํ๋๋ ์๋ ๋จ์ํ ํํ๋ ๊ฐ๋ฅ ํ๊ณ , ์ฌ๋ฌ ํ์ ์ ํ๋๋ฅผ ๊ฐ์ง ์๋ ์์ต๋๋ค.
- ๋ ๋ค ์ฐ๊ดํจ์๋ฅผ
impl
๋ธ๋ก์ผ๋ก ์ ์ ํ ์ ์์ต๋๋ค. - ์ด๊ฑฐํ ํ์ ์ ๊ฐ variant๋ฅผ ๋ณ๋์ ๊ตฌ์กฐ์ฒด๋ก ์ ์ํ ์๋ ์์ง๋ง, ๊ทธ๋ฌ๋ฉด ์ด๊ฑฐํ์ ์ฌ์ฉํ์ ๋์ฒ๋ผ ํ๋์ ํ์ ์ผ๋ก ์ทจ๊ธํ ์ ์์ต๋๋ค.