mod edge_cases;
mod errors;
mod meld_creation;
mod meld_layoff;
mod meld_properties;
use super::super::deck::DeckConfig;
use super::super::{
card::Card,
meld::{Meld, MeldError, Meldable, Run, Set},
suit_rank::{Rank, Suit},
};
use std::sync::Arc;
pub fn create_card(rank: Rank, suit: Suit, config: Arc<DeckConfig>) -> Card {
Card {
rank,
suit,
deck_config: config,
}
}
pub fn basic_config() -> Arc<DeckConfig> {
Arc::new(DeckConfig::new())
}
pub fn create_set_cards(rank: Rank, suits: &[Suit], config: Arc<DeckConfig>) -> Vec<Card> {
suits
.iter()
.map(|&suit| create_card(rank, suit, config.clone()))
.collect()
}
#[allow(dead_code)]
pub fn create_run_cards(
start_rank: Rank,
length: usize,
suit: Suit,
config: Arc<DeckConfig>,
) -> Vec<Card> {
(0..length)
.map(|i| create_card(start_rank, suit, config.clone())) .collect()
}