34 lines
663 B
Rust
34 lines
663 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum Suit {
|
|
Spades,
|
|
Hearts,
|
|
Diamonds,
|
|
Clubs,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct Rank(pub u8); // 2-14 (11=J, 12=Q, 13=K, 14=A)
|
|
|
|
impl Rank {
|
|
pub fn new(value: u8) -> Self {
|
|
Self(value)
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct Card {
|
|
pub suit: Suit,
|
|
pub rank: Rank,
|
|
}
|
|
|
|
impl Card {
|
|
pub fn new(suit: Suit, rank_val: u8) -> Self {
|
|
Self {
|
|
suit,
|
|
rank: Rank::new(rank_val),
|
|
}
|
|
}
|
|
}
|