diff --git a/exercises/enums/enums1.rs b/exercises/enums/enums1.rs index 25525b252..0b88a3572 100644 --- a/exercises/enums/enums1.rs +++ b/exercises/enums/enums1.rs @@ -2,11 +2,12 @@ // // No hints this time! ;) -// I AM NOT DONE #[derive(Debug)] enum Message { // TODO: define a few types of messages as used below + Quit, Echo, Move, ChangeColor + } fn main() { diff --git a/exercises/enums/enums2.rs b/exercises/enums/enums2.rs index df93fe0f1..7cec9d38b 100644 --- a/exercises/enums/enums2.rs +++ b/exercises/enums/enums2.rs @@ -3,11 +3,14 @@ // Execute `rustlings hint enums2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE #[derive(Debug)] enum Message { // TODO: define the different variants used below + Move { x: i32, y: i32 }, + Echo(String), + ChangeColor(i32, i32, i32), + Quit, } impl Message { diff --git a/exercises/enums/enums3.rs b/exercises/enums/enums3.rs index 5d284417e..a72291e5f 100644 --- a/exercises/enums/enums3.rs +++ b/exercises/enums/enums3.rs @@ -5,10 +5,13 @@ // Execute `rustlings hint enums3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE enum Message { // TODO: implement the message variant types based on their usage below + Move(Point), + ChangeColor(u8, u8, u8), + Echo(String), + Quit, } struct Point { @@ -43,6 +46,19 @@ impl State { // variants // Remember: When passing a tuple as a function argument, you'll need // extra parentheses: fn function((t, u, p, l, e)) + + match message { + Message::Move(p) => { self.move_position(p) }, + Message::ChangeColor(r, g, b) => { + self.change_color((r, g, b)); + }, + Message::Echo(s) => { + self.echo(s); + }, + Message::Quit => { + self.quit(); + } + } } }