/ src / enums / suits.rs
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  }