From: MA Beaudet Date: Wed, 10 Nov 2021 21:10:34 +0000 (+0100) Subject: fix: apply cargo fix recommendations X-Git-Url: https://git.beaudet.xyz/?a=commitdiff_plain;h=bda781ce657a7e6f3582eeb2cbcc9a46106d57cb;p=poker-eval.git fix: apply cargo fix recommendations --- diff --git a/src/card.rs b/src/card.rs index ce1e989..bd4a1fc 100644 --- a/src/card.rs +++ b/src/card.rs @@ -6,7 +6,7 @@ use crate::{constants::PRIMES, errors::ParseCardError, Rules}; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Debug, Default, Clone, Hash, PartialEq)] +#[derive(Debug, Default, Clone, PartialEq)] pub struct Cards(Vec); impl Cards { @@ -146,7 +146,7 @@ impl Deck { ) -> Result, ParseCardError> { (0..player_nb) .into_iter() - .map(|_| Ok(self.deal_with_rules(rules)?)) + .map(|_| self.deal_with_rules(rules)) .collect() } @@ -159,7 +159,7 @@ impl Deck { } #[cfg(feature = "rand")] - pub fn shuffle<'a>(&'a mut self) -> &'a mut Deck { + pub fn shuffle(&mut self) -> &mut Self { use rand::prelude::*; let mut rng = thread_rng(); self.0 .0.shuffle(&mut rng); @@ -185,7 +185,7 @@ impl Default for Deck { } #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Debug, Clone, Copy, Hash)] +#[derive(Debug, Clone, Copy)] #[repr(transparent)] pub struct Card(u32); diff --git a/src/evaluator.rs b/src/evaluator.rs index ce9f10b..91076f4 100644 --- a/src/evaluator.rs +++ b/src/evaluator.rs @@ -50,7 +50,7 @@ impl Evaluator { self } - pub fn hands<'a>(&'a mut self, hands: &Vec) -> &'a mut Evaluator { + pub fn hands<'a>(&'a mut self, hands: &[Cards]) -> &'a mut Evaluator { self.hands.extend_from_slice(hands); self } @@ -83,7 +83,7 @@ impl Evaluator { Ok(()) } - parse_args(&self)?; + parse_args(self)?; let hands: Vec> = self.hands.iter().map(|h| h.clone().into()).collect(); let table: Vec = self.table.clone().into(); @@ -130,10 +130,9 @@ impl Evaluator { pub fn eval_7hand(cards: &[u32]) -> Result { let mut subhand: [u32; 5] = [0; 5]; let mut best = 9999; - - for i in 0..21 { - for j in 0..5 { - subhand[j] = cards[..][PERM7[i][j] as usize]; + for perm in &PERM7 { + for (i, card) in subhand.iter_mut().enumerate() { + *card = cards[..][perm[i] as usize]; } let q = Evaluator::eval_5hand(&subhand)?; if q < best { diff --git a/src/lib.rs b/src/lib.rs index f1c94c6..28deb5c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,12 +52,12 @@ impl Default for Algorithm { } pub fn report(result: &HashMap) -> (&usize, &u16) { - for (p, s) in result.into_iter() { + for (p, s) in result.iter() { println!("Player {}: Score {}", p, s); println!("Hand value: {}", VALUE_STR[hand_rank(*s) as usize]); println!(); } - let winner = result.iter().min_by(|a, b| a.1.cmp(&b.1)).unwrap().clone(); + let winner = result.iter().min_by(|a, b| a.1.cmp(b.1)).unwrap(); println!("Winner: Player {} with score {}", winner.0, winner.1); winner }