classifier:classify: use a stack allocated array for new_cards

This commit is contained in:
2026-04-01 05:45:54 +01:00
committed by oreodave
parent 92348bc2c3
commit 591944b88e

View File

@@ -21,17 +21,17 @@ pub fn classify(cards: &[Card]) -> Option<Hand> {
return None; return None;
} }
let mut new_cards: Vec<Card> = Vec::new(); let mut cards_cpy = [Card::from(0); 5];
new_cards.extend_from_slice(cards); cards_cpy.copy_from_slice(cards);
new_cards.sort(); cards_cpy.sort();
match new_cards.len() { match cards_cpy.len() {
1 => Some(Hand::Single(new_cards[0])), 1 => Some(Hand::Single(cards_cpy[0])),
2 => is_pair(num_jokers, new_cards[0], new_cards[1]) 2 => is_pair(num_jokers, cards_cpy[0], cards_cpy[1])
.then_some(Hand::Pair(new_cards[0], new_cards[1])), .then_some(Hand::Pair(cards_cpy[0], cards_cpy[1])),
3 => is_triple(num_jokers, new_cards[0], new_cards[1], new_cards[2]) 3 => is_triple(num_jokers, cards_cpy[0], cards_cpy[1], cards_cpy[2])
.then_some(Hand::Triple(new_cards[0], new_cards[1], new_cards[2])), .then_some(Hand::Triple(cards_cpy[0], cards_cpy[1], cards_cpy[2])),
5 => classify_poker_hand(num_jokers, &new_cards) 5 => try_poker_hand(num_jokers, &cards_cpy)
.map(|ptype| Hand::make_poker_hand(ptype, cards)), .map(|ptype| Hand::make_poker_hand(ptype, &cards_cpy)),
_ => None, _ => None,
} }
} }