열거형
enum
해체도 비슷합니다.
// 이 `allow`는 하나의 variant만 사용할 경우 // 나타나는 경고를 억제합니다. #[allow(dead_code)] enum Color { // 이 3개는 이름만 존재합니다 Red, Blue, Green, // `u32` 튜플을 색상 모델 이름으로 묶습니다. RGB(u32, u32, u32), HSV(u32, u32, u32), HSL(u32, u32, u32), CMY(u32, u32, u32), CMYK(u32, u32, u32, u32), } fn main() { let color = Color::RGB(122, 17, 40); // TODO ^ `color`에 다른 variant를 설정해 보세요 println!("어떤 색상인가요?"); // 매치에서 열거형을 해체할 수 있습니다. match color { Color::Red => println!("빨간색입니다!"), Color::Blue => println!("파란색입니다!"), Color::Green => println!("초록색입니다!"), Color::RGB(r, g, b) => println!("빨간색: {}, 초록색: {}, 파란색: {}!", r, g, b), Color::HSV(h, s, v) => println!("색상(Hue): {}, 채도(Saturation): {}, 명도(Value): {}!", h, s, v), Color::HSL(h, s, l) => println!("색상(Hue): {}, 채도(Saturation): {}, 명도(Lightness): {}!", h, s, l), Color::CMY(c, m, y) => println!("Cyan: {}, Magenta: {}, Yellow: {}!", c, m, y), Color::CMYK(c, m, y, k) => println!("Cyan: {}, Magenta: {}, Yellow: {}, Key(Black): {}!", c, m, y, k), // 모든 variant가 검사되었으므로 더 이상의 갈래가 필요하지 않습니다 } }