#![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 CompassPoint { North = 0, East = 1, South = 2, West = 3, } } fn compass_point_to_string(c:CompassPoint) -> String { let mut result:&'static str = ""; match c { CompassPoint::North => { result = "North"; } CompassPoint::East => { result = "East"; } CompassPoint::South => { result = "South"; } CompassPoint::West => { result = "West"; } } return result.to_string(); } fn turn_right(c:CompassPoint) -> CompassPoint { if c == CompassPoint::North { return CompassPoint::East; } else if c == CompassPoint::East { return CompassPoint::South; } else if c == CompassPoint::South { return CompassPoint::West; } else { return CompassPoint::North; } } fn main() { let mut cp1:CompassPoint = CompassPoint::North; println!("cp1: {}", cp1.name()); println!("SOUTH: {}", compass_point_to_string(CompassPoint::South)); println!("turnRight(cp1): {}", compass_point_to_string(turn_right(cp1))); let cp2:CompassPoint = CompassPoint::East; if cp1 == cp2 { println!("cp1 == cp2"); } else { println!("cp1 != cp2"); } cp1 = cp2; if cp1 == cp2 { println!("cp1 == cp2"); } else { println!("cp1 != cp2"); } }