diff options
| author | Mo <76752051+mo8it@users.noreply.github.com> | 2024-07-05 13:43:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-05 13:43:25 +0200 |
| commit | 67d8d5848ce27b968fc5b2c4a92cf175b685bce7 (patch) | |
| tree | 08c01a27c517f80bcb64e290ee44e169101d58b6 | |
| parent | 4d9c346a173bb722b929f3ea3c00f84954483e24 (diff) | |
| parent | 43d15f09f00a1c4f795550cd3515803d14962211 (diff) | |
Merge pull request #1774 from matthri/fix-enum-variant-inconsistency
Make enum variants more consistent between exercises
| -rw-r--r-- | exercises/08_enums/enums1.rs | 1 | ||||
| -rw-r--r-- | exercises/08_enums/enums2.rs | 9 | ||||
| -rw-r--r-- | exercises/08_enums/enums3.rs | 12 | ||||
| -rw-r--r-- | rustlings-macros/info.toml | 2 |
4 files changed, 22 insertions, 2 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); diff --git a/rustlings-macros/info.toml b/rustlings-macros/info.toml index d75d73f..715778d 100644 --- a/rustlings-macros/info.toml +++ b/rustlings-macros/info.toml @@ -445,7 +445,7 @@ dir = "08_enums" test = false hint = """ You can create enumerations that have different variants with different types -such as no data, anonymous structs, a single string, tuples, etc.""" +such as anonymous structs, structs, a single string, tuples, no data, etc.""" [[exercises]] name = "enums3" |
