From 5aa28c2b07905cfdc535117d150b09b0beee288b Mon Sep 17 00:00:00 2001 From: Florent DENEF Date: Fri, 2 Dec 2022 16:43:02 +0100 Subject: [PATCH] The thing is working (forced to use a variable for the conversion with into()). --- src/prob2/mod.rs | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/prob2/mod.rs b/src/prob2/mod.rs index 1f8dee1..1646b0f 100644 --- a/src/prob2/mod.rs +++ b/src/prob2/mod.rs @@ -62,17 +62,39 @@ pub fn round_score(play: char, counter_play: char) -> i32 { let coup = Play::from(play); // translate to the play let counter = Play::from(counter_play); // translate to the play if coup == counter { - (ResultPlay::Draw as i32) + (counter_play as i32) + let draw: i32 = ResultPlay::Draw.into(); + let result: i32 = counter.into(); + draw + result } else { use Play::*; use ResultPlay::*; + let loss: i32 = Loss.into(); + let win: i32 = Win.into(); match (&coup, &counter) { - (Rock, Paper) => (Win as i32) + (counter as i32), - (Rock, Scissors) => (Loss as i32) + (counter as i32), - (Paper, Rock) => (Loss as i32) + (counter as i32), - (Paper, Scissors) => (Win as i32) + (counter as i32), - (Scissors, Rock) => (Win as i32) + (counter as i32), - (Scissors, Paper) => (Loss as i32) + (counter as i32), + (Rock, Paper) => { + let result: i32 = counter.into(); + win + result + } + (Rock, Scissors) => { + let result: i32 = counter.into(); + loss + result + } + (Paper, Rock) => { + let result: i32 = counter.into(); + loss + result + } + (Paper, Scissors) => { + let result: i32 = counter.into(); + win + result + } + (Scissors, Rock) => { + let result: i32 = counter.into(); + win + result + } + (Scissors, Paper) => { + let result: i32 = counter.into(); + loss + result + } _ => panic!("Case not covered, impossible to reach."), } }