mao/server/pre-server/card.rs

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",
}
)
}
}