From de0fdf33ad37b0c63d8545fa911d4488201617db Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Sat, 16 May 2026 22:12:27 -0700 Subject: [PATCH] specific functions --- klondike/src/lib.rs | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/klondike/src/lib.rs b/klondike/src/lib.rs index a2967d8..9d7bf47 100644 --- a/klondike/src/lib.rs +++ b/klondike/src/lib.rs @@ -397,21 +397,22 @@ impl KlondikeState { KlondikePile::Stock => self.stock.pop_flip_up(), } } - fn extend, I: IntoIterator>(&mut self, dst: D, cards: I) { - match dst.into() { - KlondikePile::Tableau(tableau) => match tableau { - Tableau::Tableau1 => self.tableau1.extend(cards), - Tableau::Tableau2 => self.tableau2.extend(cards), - Tableau::Tableau3 => self.tableau3.extend(cards), - Tableau::Tableau4 => self.tableau4.extend(cards), - Tableau::Tableau5 => self.tableau5.extend(cards), - Tableau::Tableau6 => self.tableau6.extend(cards), - Tableau::Tableau7 => self.tableau7.extend(cards), - }, - KlondikePile::Foundation(foundation) => { - self.foundations[foundation as usize].extend(cards) - } - KlondikePile::Stock => self.stock.extend(cards), + fn extend_foundation>( + &mut self, + foundation: Foundation, + cards: I, + ) { + self.foundations[foundation as usize].extend(cards) + } + fn extend_tableau>(&mut self, tableau: Tableau, cards: I) { + match tableau { + Tableau::Tableau1 => self.tableau1.extend(cards), + Tableau::Tableau2 => self.tableau2.extend(cards), + Tableau::Tableau3 => self.tableau3.extend(cards), + Tableau::Tableau4 => self.tableau4.extend(cards), + Tableau::Tableau5 => self.tableau5.extend(cards), + Tableau::Tableau6 => self.tableau6.extend(cards), + Tableau::Tableau7 => self.tableau7.extend(cards), } } pub fn is_instruction_valid(&self, instruction: KlondikeInstruction) -> bool { @@ -557,12 +558,12 @@ impl Game for Klondike { // Move a card from anywhere to a foundation KlondikeInstruction::DstFoundation(DstFoundation { src, foundation }) => { let card = self.state.take_top_card(src); - self.state.extend(foundation, card); + self.state.extend_foundation(foundation, card); } // Move a stack of cards from anywhere to a tableau KlondikeInstruction::DstTableau(DstTableau { src, tableau }) => { let cards = self.state.take_stack(src); - self.state.extend(tableau, cards); + self.state.extend_tableau(tableau, cards); } } }