summaryrefslogtreecommitdiff
path: root/exercises/08_enums
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-07-05 14:11:03 +0200
committermo8it <mo8it@proton.me>2024-07-05 14:11:03 +0200
commit584164a6ffff87d2b10916f25e8172a3e5f1daa1 (patch)
tree2bd1fad8c58aec5cec74833cf64a1f4d21884bf0 /exercises/08_enums
parente6f6d26d131e3a3ee89248c1fdaba22d8d1d79e2 (diff)
Adjust enums exercises
Diffstat (limited to 'exercises/08_enums')
-rw-r--r--exercises/08_enums/enums1.rs4
-rw-r--r--exercises/08_enums/enums2.rs18
-rw-r--r--exercises/08_enums/enums3.rs53
3 files changed, 41 insertions, 34 deletions
diff --git a/exercises/08_enums/enums1.rs b/exercises/08_enums/enums1.rs
index c65e641..c0d0c30 100644
--- a/exercises/08_enums/enums1.rs
+++ b/exercises/08_enums/enums1.rs
@@ -4,9 +4,9 @@ enum Message {
}
fn main() {
- println!("{:?}", Message::Quit);
- println!("{:?}", Message::Echo);
println!("{:?}", Message::Resize);
println!("{:?}", Message::Move);
+ println!("{:?}", Message::Echo);
println!("{:?}", Message::ChangeColor);
+ println!("{:?}", Message::Quit);
}
diff --git a/exercises/08_enums/enums2.rs b/exercises/08_enums/enums2.rs
index 5a74991..29ed1b6 100644
--- a/exercises/08_enums/enums2.rs
+++ b/exercises/08_enums/enums2.rs
@@ -1,13 +1,14 @@
-#[allow(dead_code)]
+#![allow(dead_code)]
+
#[derive(Debug)]
-enum Message {
- // TODO: Define the different variants used below.
+struct Point {
+ x: u64,
+ y: u64,
}
#[derive(Debug)]
-struct Point {
- x: u8,
- y: u8,
+enum Message {
+ // TODO: Define the different variants used below.
}
impl Message {
@@ -18,7 +19,10 @@ impl Message {
fn main() {
let messages = [
- Message::Resize { w: 10, h: 30 },
+ Message::Resize {
+ width: 10,
+ height: 30,
+ },
Message::Move(Point { x: 10, y: 15 }),
Message::Echo(String::from("hello world")),
Message::ChangeColor(200, 255, 255),
diff --git a/exercises/08_enums/enums3.rs b/exercises/08_enums/enums3.rs
index 2d0d82d..f49707c 100644
--- a/exercises/08_enums/enums3.rs
+++ b/exercises/08_enums/enums3.rs
@@ -1,41 +1,41 @@
-enum Message {
- // TODO: Implement the message variant types based on their usage below.
+struct Point {
+ x: u64,
+ y: u64,
}
-struct Point {
- x: u8,
- y: u8,
+enum Message {
+ // TODO: Implement the message variant types based on their usage below.
}
struct State {
- color: (u8, u8, u8),
- width: u8,
- height: u8,
+ width: u64,
+ height: u64,
position: Point,
- quit: bool,
message: String,
+ color: (u8, u8, u8),
+ quit: bool,
}
impl State {
- fn change_color(&mut self, color: (u8, u8, u8)) {
- self.color = color;
+ fn resize(&mut self, width: u64, height: u64) {
+ self.width = width;
+ self.height = height;
}
- fn quit(&mut self) {
- self.quit = true;
+ fn move_position(&mut self, point: Point) {
+ self.position = point;
}
fn echo(&mut self, s: String) {
self.message = s;
}
- fn resize(&mut self, width: u8, height: u8) {
- self.width = width;
- self.height = height;
+ fn change_color(&mut self, color: (u8, u8, u8)) {
+ self.color = color;
}
- fn move_position(&mut self, point: Point) {
- self.position = point;
+ fn quit(&mut self) {
+ self.quit = true;
}
fn process(&mut self, message: Message) {
@@ -56,26 +56,29 @@ mod tests {
#[test]
fn test_match_message_call() {
let mut state = State {
- quit: false,
width: 0,
height: 0,
position: Point { x: 0, y: 0 },
- color: (0, 0, 0),
message: String::from("hello world"),
+ color: (0, 0, 0),
+ quit: false,
};
- state.process(Message::ChangeColor(255, 0, 255));
- state.process(Message::Echo(String::from("Hello world!")));
- state.process(Message::Resize { w: 10, h: 30 });
+ state.process(Message::Resize {
+ width: 10,
+ height: 30,
+ });
state.process(Message::Move(Point { x: 10, y: 15 }));
+ state.process(Message::Echo(String::from("Hello world!")));
+ state.process(Message::ChangeColor(255, 0, 255));
state.process(Message::Quit);
- assert_eq!(state.color, (255, 0, 255));
assert_eq!(state.width, 10);
assert_eq!(state.height, 30);
assert_eq!(state.position.x, 10);
assert_eq!(state.position.y, 15);
- assert!(state.quit);
assert_eq!(state.message, "Hello world!");
+ assert_eq!(state.color, (255, 0, 255));
+ assert!(state.quit);
}
}