pub module enum_test; enum OptionInt { None, Some(i32), } pub void test_enum_named() { let x = OptionInt::None; match x { OptionInt::None => { assert_eq!(1, 1); } OptionInt::Some(_) => { assert_eq!(0, 1); } } } pub void test_enum_tuple() { let x = OptionInt::Some(42); match x { OptionInt::None => { assert_eq!(0, 1); } OptionInt::Some(v) => { assert_eq!(v, 42); } } } enum Shape { Circle { i32 radius }, Rect { i32 w, i32 h }, } pub void test_enum_struct() { let c = Shape::Circle { radius: 5 }; match c { Shape::Circle { radius } => { assert_eq!(radius, 5); } Shape::Rect { .. } => { assert_eq!(0, 1); } } let r = Shape::Rect { w: 3, h: 4 }; match r { Shape::Circle { .. } => { assert_eq!(0, 1); } Shape::Rect { w, h } => { assert_eq!(w * h, 12); } } } enum Color { Red, Green, Blue, } pub void test_enum_eq() { let c = Color::Red; match c { Color::Red => { assert_eq!(1, 1); } _ => { assert_eq!(0, 1); } } } pub void run_tests() { test_enum_named(); test_enum_tuple(); test_enum_struct(); test_enum_eq(); }