use std::fmt;
#[derive(Clone, Debug, PartialEq, Eq, Copy, Hash, PartialOrd, Serialize, Deserialize, Ord)]
pub enum Suit{
Clubs,
Hearts,
Diamonds,
Spades
}
impl fmt::Display for Suit{
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let icon = match self {
&Suit::Diamonds => "♦",
&Suit::Clubs => "♣",
&Suit::Hearts => "♥",
&Suit::Spades => "♠"
};
write!(f, "{}", icon)
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, Copy, PartialOrd, Serialize, Deserialize, Ord)]
pub enum Colour{
Red,
Black
}
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Hash, Serialize, Deserialize)]
pub enum Rank{
Three,
Four,
Five,
Six,
Seven,
Eight,
Nine,
Ten,
Jack,
Queen,
King,
Ace,
Two
}
impl fmt::Display for Rank{
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let display = match *self {
Rank::Ace => "A",
Rank::Two => "2",
Rank::Three => "3",
Rank::Four => "4",
Rank::Five => "5",
Rank::Six => "6",
Rank::Seven => "7",
Rank::Eight => "8",
Rank::Nine => "9",
Rank::Ten => "10",
Rank::Jack => "J",
Rank::Queen => "Q",
Rank::King => "K",
};
write!(f, "{}", display)
}
}