From cb01c282c96e800027ff2770dca18c6967f59e98 Mon Sep 17 00:00:00 2001 From: MA Beaudet Date: Mon, 8 Nov 2021 16:02:02 +0100 Subject: [PATCH] feat!(card): Deck methods get get_with.. return Result --- src/card.rs | 22 +++++++++++++--------- src/lib.rs | 1 + 2 files changed, 14 insertions(+), 9 deletions(-) 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 {} -- 2.20.1