summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
authorMo <76752051+mo8it@users.noreply.github.com>2024-07-05 13:43:25 +0200
committerGitHub <noreply@github.com>2024-07-05 13:43:25 +0200
commit67d8d5848ce27b968fc5b2c4a92cf175b685bce7 (patch)
tree08c01a27c517f80bcb64e290ee44e169101d58b6 /exercises
parent4d9c346a173bb722b929f3ea3c00f84954483e24 (diff)
parent43d15f09f00a1c4f795550cd3515803d14962211 (diff)
Merge pull request #1774 from matthri/fix-enum-variant-inconsistency
Make enum variants more consistent between exercises
Diffstat (limited to 'exercises')
-rw-r--r--exercises/08_enums/enums1.rs1
-rw-r--r--exercises/08_enums/enums2.rs9
-rw-r--r--exercises/08_enums/enums3.rs12
3 files changed, 21 insertions, 1 deletions
diff --git a/exercises/08_enums/enums1.rs b/exercises/08_enums/enums1.rs
index 99f7087..c65e641 100644
--- a/exercises/08_enums/enums1.rs
+++ b/exercises/08_enums/enums1.rs
@@ -6,6 +6,7 @@ enum Message {
fn main() {
println!("{:?}", Message::Quit);
println!("{:?}", Message::Echo);
+ println!("{:?}", Message::Resize);
println!("{:?}", Message::Move);
println!("{:?}", Message::ChangeColor);
}
diff --git a/exercises/08_enums/enums2.rs b/exercises/08_enums/enums2.rs
index 32cf2a6..5a74991 100644
--- a/exercises/08_enums/enums2.rs
+++ b/exercises/08_enums/enums2.rs
@@ -4,6 +4,12 @@ enum Message {
// TODO: Define the different variants used below.
}
+#[derive(Debug)]
+struct Point {
+ x: u8,
+ y: u8,
+}
+
impl Message {
fn call(&self) {
println!("{self:?}");
@@ -12,7 +18,8 @@ impl Message {
fn main() {
let messages = [
- Message::Move { x: 10, y: 30 },
+ Message::Resize { w: 10, h: 30 },
+ Message::Move(Point { x: 10, y: 15 }),
Message::Echo(String::from("hello world")),
Message::ChangeColor(200, 255, 255),
Message::Quit,
diff --git a/exercises/08_enums/enums3.rs b/exercises/08_enums/enums3.rs
index 7dd2171..2d0d82d 100644
--- a/exercises/08_enums/enums3.rs
+++ b/exercises/08_enums/enums3.rs
@@ -9,6 +9,8 @@ struct Point {
struct State {
color: (u8, u8, u8),
+ width: u8,
+ height: u8,
position: Point,
quit: bool,
message: String,
@@ -27,6 +29,11 @@ impl State {
self.message = s;
}
+ fn resize(&mut self, width: u8, height: u8) {
+ self.width = width;
+ self.height = height;
+ }
+
fn move_position(&mut self, point: Point) {
self.position = point;
}
@@ -50,6 +57,8 @@ mod tests {
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"),
@@ -57,10 +66,13 @@ mod tests {
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::Move(Point { x: 10, y: 15 }));
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);