diff --git a/enum_example/src/main.rs b/enum_example/src/main.rs index 7227913..72b29e0 100644 --- a/enum_example/src/main.rs +++ b/enum_example/src/main.rs @@ -17,7 +17,16 @@ enum Message { impl Message { fn print(&self) { - println!("calling message {:?}", self); + println!("I don't do anything but can be called with any type: {:?}", self); + } + + fn call(&self) { + match self { + Message::Quit => println!("Calling on a quit type!"), + Message::Move { x, y } => println!("Calling on a move type: {}, {}!", x, y), + Message::Write (s) => println!("Calling on a write type: {}!", s), + Message::ChangeColor (c) => println!("Calling on a color type: {:#?}!", c), + } } } @@ -29,10 +38,14 @@ fn main() { let msg = Message::Quit; msg.print(); + msg.call(); let msg = Message::Move{ x: 1, y:2}; msg.print(); + msg.call(); let msg = Message::Write(String::from("Hello enum")); msg.print(); + msg.call(); let msg = Message::ChangeColor(Color(1,2,3)); msg.print(); + msg.call(); }