7.5.1.2 enums
enum
도 유사하게 역구조화 된다:
// `allow`는 하나의 변수만 사용되는 것에 대한 경고를 생략시키는데 필요하다. #[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`에 다른 변수명을 사용해보세요. println!("What color is it?"); // `enum`은 `match`를 사용해 역구조화 할 수 있다. match color { Color::Red => println!("The color is Red!"), Color::Blue => println!("The color is Blue!"), Color::Green => println!("The color is Green!"), Color::RGB(r, g, b) => println!("Red: {}, green: {}, and blue: {}!", 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), // 모든 변수가 검토되었기 때문에 이 외에 범위가 필요하지 않다. } }