78 lines
1.7 KiB
Rust
78 lines
1.7 KiB
Rust
pub mod consts;
|
|
|
|
use std::fmt::Display;
|
|
|
|
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
|
|
pub struct Card {
|
|
value: Value,
|
|
suit: Suit,
|
|
}
|
|
|
|
impl Card {
|
|
pub const fn new(value: Value, suit: Suit) -> Self {
|
|
Self { value, suit }
|
|
}
|
|
}
|
|
impl Display for Card {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(f, "{}{}", self.value, self.suit)
|
|
}
|
|
}
|
|
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
|
|
pub enum Suit {
|
|
Clubs,
|
|
Diamonds,
|
|
Hearts,
|
|
Spades,
|
|
}
|
|
impl Display for Suit {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(
|
|
f, "{}",
|
|
match self {
|
|
Self::Clubs => "♣",
|
|
Self::Diamonds => "◆",
|
|
Self::Hearts => "♥",
|
|
Self::Spades => "♠",
|
|
}
|
|
)
|
|
}
|
|
}
|
|
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
|
|
pub enum Value {
|
|
Ace = 1,
|
|
Two,
|
|
Three,
|
|
Four,
|
|
Five,
|
|
Six,
|
|
Seven,
|
|
Eight,
|
|
Nine,
|
|
Ten,
|
|
Jack,
|
|
Queen,
|
|
King,
|
|
}
|
|
impl Display for Value {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(
|
|
f, "{}",
|
|
match self {
|
|
Self::Ace => "A",
|
|
Self::Two => "2",
|
|
Self::Three => "3",
|
|
Self::Four => "4",
|
|
Self::Five => "5",
|
|
Self::Six => "6",
|
|
Self::Seven => "7",
|
|
Self::Eight => "8",
|
|
Self::Nine => "9",
|
|
Self::Ten => "10",
|
|
Self::Jack => "J",
|
|
Self::Queen => "Q",
|
|
Self::King => "K",
|
|
}
|
|
)
|
|
}
|
|
} |