From: MA Beaudet Date: Mon, 8 Nov 2021 15:02:02 +0000 (+0100) Subject: feat!(card): Deck methods get get_with.. return Result X-Git-Url: https://git.beaudet.xyz/?a=commitdiff_plain;h=cb01c282c96e800027ff2770dca18c6967f59e98;p=poker-eval.git feat!(card): Deck methods get get_with.. return Result --- diff --git a/src/card.rs b/src/card.rs index 709218a..b5d6c9c 100644 --- a/src/card.rs +++ b/src/card.rs @@ -41,27 +41,31 @@ impl Deck { Self::default() } - pub fn get_with_rules(&mut self, rules: &Rules) -> Cards { + pub fn get_with_rules(&mut self, rules: &Rules) -> Result { let v = match rules { - Rules::Classic => self.get(5), + Rules::Classic => self.get(5)?, - Rules::Holdem => self.get(2), + Rules::Holdem => self.get(2)?, }; - v.unwrap() + Ok(v) } - pub fn get_with_rules_and_player_nb(&mut self, rules: &Rules, player_nb: usize) -> Vec { + pub fn get_with_rules_and_player_nb( + &mut self, + rules: &Rules, + player_nb: usize, + ) -> Result, MyError> { (0..player_nb) .into_iter() - .map(|_| self.get_with_rules(rules)) + .map(|_| Ok(self.get_with_rules(rules)?)) .collect() } - pub fn get(&mut self, n: usize) -> Option { + pub fn get(&mut self, n: usize) -> Result { if self.0 .0.len() < n { - None + Err(MyError::IndexError) } else { - Some(Cards(self.0 .0.split_off(self.0 .0.len() - n))) + Ok(Cards(self.0 .0.split_off(self.0 .0.len() - n))) } } diff --git a/src/lib.rs b/src/lib.rs index b2f5ac9..fc09bd2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,6 +26,7 @@ pub enum MyError { InvalidLength, InvalidRank, InvalidSuit, + IndexError } impl std::error::Error for MyError {}