summaryrefslogtreecommitdiff
path: root/rust/rustlings/solutions/08_enums/enums2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/rustlings/solutions/08_enums/enums2.rs')
-rw-r--r--rust/rustlings/solutions/08_enums/enums2.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/rust/rustlings/solutions/08_enums/enums2.rs b/rust/rustlings/solutions/08_enums/enums2.rs
new file mode 100644
index 0000000..07aee26
--- /dev/null
+++ b/rust/rustlings/solutions/08_enums/enums2.rs
@@ -0,0 +1,37 @@
+#[derive(Debug)]
+struct Point {
+ x: u64,
+ y: u64,
+}
+
+#[derive(Debug)]
+enum Message {
+ Resize { width: u64, height: u64 },
+ Move(Point),
+ Echo(String),
+ ChangeColor(u8, u8, u8),
+ Quit,
+}
+
+impl Message {
+ fn call(&self) {
+ println!("{self:?}");
+ }
+}
+
+fn main() {
+ let messages = [
+ Message::Resize {
+ width: 10,
+ height: 30,
+ },
+ Message::Move(Point { x: 10, y: 15 }),
+ Message::Echo(String::from("hello world")),
+ Message::ChangeColor(200, 255, 255),
+ Message::Quit,
+ ];
+
+ for message in &messages {
+ message.call();
+ }
+}