summaryrefslogtreecommitdiff
path: root/exercises/08_enums/enums3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/08_enums/enums3.rs')
-rw-r--r--exercises/08_enums/enums3.rs53
1 files changed, 28 insertions, 25 deletions
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);
}
}