diff --git a/src/card.rs b/src/card.rs index ff1b224..c809c34 100644 --- a/src/card.rs +++ b/src/card.rs @@ -1,12 +1,14 @@ +use std::fmt::Display; + use serde::{Serialize, Deserialize}; -#[derive(Debug, Serialize, Deserialize)] +#[derive(Serialize, Deserialize)] pub struct Card { pub suit: Suit, pub value: u8, } -#[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[derive(Clone, Copy, Serialize, Deserialize)] pub enum Suit { Hearts, Diamonds, @@ -30,3 +32,22 @@ impl Card { self.value } } + +impl Display for Suit { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let suit = match self { + Suit::Diamonds => String::from("♦"), + Suit::Hearts => String::from("♥"), + Suit::Spades => String::from("♠"), + Suit::Clubs => String::from("♣"), + }; + + write!(f, "{}", suit) + } +} + +impl Display for Card { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "[{}{}]", self.value, self.suit) + } +}