diff options
Diffstat (limited to 'rustlings/solutions/08_enums')
| -rw-r--r-- | rustlings/solutions/08_enums/enums1.rs | 16 | ||||
| -rw-r--r-- | rustlings/solutions/08_enums/enums2.rs | 37 | ||||
| -rw-r--r-- | rustlings/solutions/08_enums/enums3.rs | 92 |
3 files changed, 0 insertions, 145 deletions
diff --git a/rustlings/solutions/08_enums/enums1.rs b/rustlings/solutions/08_enums/enums1.rs deleted file mode 100644 index 97a5cc0..0000000 --- a/rustlings/solutions/08_enums/enums1.rs +++ /dev/null @@ -1,16 +0,0 @@ -#[derive(Debug)] -enum Message { - Resize, - Move, - Echo, - ChangeColor, - Quit, -} - -fn main() { - println!("{:?}", Message::Resize); - println!("{:?}", Message::Move); - println!("{:?}", Message::Echo); - println!("{:?}", Message::ChangeColor); - println!("{:?}", Message::Quit); -} diff --git a/rustlings/solutions/08_enums/enums2.rs b/rustlings/solutions/08_enums/enums2.rs deleted file mode 100644 index 07aee26..0000000 --- a/rustlings/solutions/08_enums/enums2.rs +++ /dev/null @@ -1,37 +0,0 @@ -#[derive(Debug)] -struct Point { - x: u64, - y: u64, -} - -#[derive(Debug)] -enum Message { - Resize { width: u64, height: u64 }, - Move(Point), - Echo(String), - ChangeColor(u8, u8, u8), - Quit, -} - -impl Message { - fn call(&self) { - println!("{self:?}"); - } -} - -fn main() { - let messages = [ - Message::Resize { - width: 10, - height: 30, - }, - Message::Move(Point { x: 10, y: 15 }), - Message::Echo(String::from("hello world")), - Message::ChangeColor(200, 255, 255), - Message::Quit, - ]; - - for message in &messages { - message.call(); - } -} diff --git a/rustlings/solutions/08_enums/enums3.rs b/rustlings/solutions/08_enums/enums3.rs deleted file mode 100644 index 94cf250..0000000 --- a/rustlings/solutions/08_enums/enums3.rs +++ /dev/null @@ -1,92 +0,0 @@ -struct Point { - x: u64, - y: u64, -} - -enum Message { - Resize { width: u64, height: u64 }, - Move(Point), - Echo(String), - ChangeColor(u8, u8, u8), - Quit, -} - -struct State { - width: u64, - height: u64, - position: Point, - message: String, - color: (u8, u8, u8), - quit: bool, -} - -impl State { - fn resize(&mut self, width: u64, height: u64) { - self.width = width; - self.height = height; - } - - fn move_position(&mut self, point: Point) { - self.position = point; - } - - fn echo(&mut self, s: String) { - self.message = s; - } - - fn change_color(&mut self, red: u8, green: u8, blue: u8) { - self.color = (red, green, blue); - } - - fn quit(&mut self) { - self.quit = true; - } - - fn process(&mut self, message: Message) { - match message { - Message::Resize { width, height } => self.resize(width, height), - Message::Move(point) => self.move_position(point), - Message::Echo(string) => self.echo(string), - Message::ChangeColor(red, green, blue) => self.change_color(red, green, blue), - Message::Quit => self.quit(), - } - } -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_match_message_call() { - let mut state = State { - width: 0, - height: 0, - position: Point { x: 0, y: 0 }, - message: String::from("hello world"), - color: (0, 0, 0), - quit: false, - }; - - 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.width, 10); - assert_eq!(state.height, 30); - assert_eq!(state.position.x, 10); - assert_eq!(state.position.y, 15); - assert_eq!(state.message, "Hello world!"); - assert_eq!(state.color, (255, 0, 255)); - assert!(state.quit); - } -} |