From 086a603bab9a55a6262a5207c6b3f25b2398c843 Mon Sep 17 00:00:00 2001 From: laurens Date: Fri, 22 May 2020 14:47:04 +0200 Subject: [PATCH] enum: Add full example with match - access specific type params --- enum_example/src/main.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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(); }