diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-03 17:25:32 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-03 17:25:32 -0500 |
commit | 581e9ec21a85a3d2f908016c28d831e8022cb1f4 (patch) | |
tree | dc098241f07ff9c1cdc226de3fbc2e385c6240cb /protocol/src/card.rs | |
parent | e6933ac48848b598f870ff5a9d96a0336728620b (diff) |
Change deal function to use random()
Diffstat (limited to 'protocol/src/card.rs')
-rw-r--r-- | protocol/src/card.rs | 47 |
1 files changed, 6 insertions, 41 deletions
diff --git a/protocol/src/card.rs b/protocol/src/card.rs index e27f29a..3d6081d 100644 --- a/protocol/src/card.rs +++ b/protocol/src/card.rs @@ -1,14 +1,15 @@ -use serde::{Deserialize, Serialize}; use anyhow::anyhow; -use rand::prelude::SliceRandom; -use rand::Rng; + +pub(crate) use serde::{Deserialize, Serialize}; use std::fmt; use strum::EnumCount; use strum::IntoEnumIterator; use strum_macros::EnumCount; use strum_macros::EnumIter; -#[derive(PartialOrd, Ord, PartialEq, Eq, Clone, Copy, EnumIter, EnumCount, Serialize, Deserialize)] +#[derive( + PartialOrd, Ord, PartialEq, Eq, Clone, Copy, EnumIter, EnumCount, Serialize, Deserialize, +)] pub enum Suit { Club, Diamond, @@ -152,7 +153,7 @@ impl std::str::FromStr for Card { } } -fn make_deck() -> Vec<Card> { +pub fn make_deck() -> Vec<Card> { let mut result = vec![]; for suit in Suit::iter() { for rank in Rank::iter() { @@ -240,39 +241,3 @@ mod tests { ); } } - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub struct Deal { - pub north: Vec<Card>, - pub west: Vec<Card>, - pub south: Vec<Card>, - pub east: Vec<Card>, -} - -impl Deal { - pub fn sort(&mut self, suits: &[Suit; 4], ord: RankOrder) { - sort_cards(suits, ord, self.north.as_mut_slice()); - sort_cards(suits, ord, self.west.as_mut_slice()); - sort_cards(suits, ord, self.south.as_mut_slice()); - sort_cards(suits, ord, self.east.as_mut_slice()); - } -} - -pub fn deal<R>(rng: &mut R) -> Deal -where - R: Rng, -{ - let mut deck = make_deck(); - deck.shuffle(rng); - let mut deck = deck.iter(); - let north = deck.by_ref().take(13).cloned().collect(); - let west = deck.by_ref().take(13).cloned().collect(); - let south = deck.by_ref().take(13).cloned().collect(); - let east = deck.by_ref().take(13).cloned().collect(); - Deal { - north, - west, - south, - east, - } -} |