summaryrefslogtreecommitdiff
path: root/rustlings/exercises/08_enums
diff options
context:
space:
mode:
Diffstat (limited to 'rustlings/exercises/08_enums')
-rw-r--r--rustlings/exercises/08_enums/enums1.rs6
-rw-r--r--rustlings/exercises/08_enums/enums2.rs9
-rw-r--r--rustlings/exercises/08_enums/enums3.rs9
3 files changed, 20 insertions, 4 deletions
diff --git a/rustlings/exercises/08_enums/enums1.rs b/rustlings/exercises/08_enums/enums1.rs
index c0d0c30..97a5cc0 100644
--- a/rustlings/exercises/08_enums/enums1.rs
+++ b/rustlings/exercises/08_enums/enums1.rs
@@ -1,6 +1,10 @@
#[derive(Debug)]
enum Message {
- // TODO: Define a few types of messages as used below.
+ Resize,
+ Move,
+ Echo,
+ ChangeColor,
+ Quit,
}
fn main() {
diff --git a/rustlings/exercises/08_enums/enums2.rs b/rustlings/exercises/08_enums/enums2.rs
index d70f639..4a2d5ac 100644
--- a/rustlings/exercises/08_enums/enums2.rs
+++ b/rustlings/exercises/08_enums/enums2.rs
@@ -6,7 +6,14 @@ struct Point {
#[derive(Debug)]
enum Message {
- // TODO: Define the different variants used below.
+ Resize {
+ width: u64,
+ height: u64,
+ },
+ Move(Point),
+ Echo(String),
+ ChangeColor(u8, u8, u8),
+ Quit,
}
impl Message {
diff --git a/rustlings/exercises/08_enums/enums3.rs b/rustlings/exercises/08_enums/enums3.rs
index cb05f65..bf01af3 100644
--- a/rustlings/exercises/08_enums/enums3.rs
+++ b/rustlings/exercises/08_enums/enums3.rs
@@ -44,8 +44,13 @@ impl State {
}
fn process(&mut self, message: Message) {
- // TODO: Create a match expression to process the different message
- // variants using the methods defined above.
+ match message {
+ Message::Resize { width, height } => self.resize(width, height),
+ Message::Move(point) => self.move_position(point),
+ Message::Echo(s) => self.echo(s),
+ Message::ChangeColor(red, green, blue) => self.change_color(red, green, blue),
+ Message::Quit => self.quit(),
+ }
}
}