suits.rs
1 // Declare the `card` module (located at src/deck/card.rs) 2 pub use crate::enums::cards::CardValue; // Import from the top-level `enums` module 3 use std::fmt; 4 5 #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] 6 pub enum Suit { 7 Clubs, 8 Diamonds, 9 Hearts, 10 Spades 11 } 12 // src/enums/suits.rs 13 impl Suit { 14 pub fn all() -> [Self; 4] { 15 [Suit::Hearts, Suit::Diamonds, Suit::Clubs, Suit::Spades] 16 } 17 } 18 19 20 impl CardValue { 21 pub fn all() -> [Self; 13] { 22 [ 23 CardValue::Two, 24 CardValue::Three, 25 CardValue::Four, 26 CardValue::Five, 27 CardValue::Six, 28 CardValue::Seven, 29 CardValue::Eight, 30 CardValue::Nine, 31 CardValue::Ten, 32 CardValue::Jack, 33 CardValue::Queen, 34 CardValue::King, 35 CardValue::Ace, 36 ] 37 } 38 } 39 impl fmt::Display for Suit { 40 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 41 match self { 42 Suit::Hearts => write!(f, "♥"), 43 Suit::Diamonds => write!(f, "♦"), 44 Suit::Clubs => write!(f, "♣"), 45 Suit::Spades => write!(f, "♠"), 46 } 47 } 48 }