#![allow(dead_code)] #![allow(non_snake_case)] #![allow(non_upper_case_globals)] #[macro_use] mod utils; use num_enum::IntoPrimitive; use num_enum::TryFromPrimitive; enum_str! { enum Color { Red = 1, Green = 2, Yellow = 3, Blue = 4, Magenta = 5, Cyan = 6, } } fn combine_colors(c1:Color, c2:Color) -> Color { let i1:isize = c1.into(); let i2:isize = c2.into(); let result:isize = i1 | i2; let return_color:Color = Color::try_from(result).unwrap(); return return_color; } fn main() { let mut c1:Color = Color::Blue; println!("c1: {}", c1.name()); println!("RED: {}", Color::Red.name()); println!("combineColors(c1, RED): {}", combine_colors(c1, Color::Red).name()); let c2:Color = Color::Green; println!("combineColors(c1, c2): {}", combine_colors(c1, c2).name()); if c1 == c2 { println!("c1 == c2"); } else { println!("c1 != c2"); } c1 = c2; if c1 == c2 { println!("c1 == c2"); } else { println!("c1 != c2"); } let bad:Color = Color::try_from(7).unwrap(); println!("bad: {}", bad.name()); }