feat(klondike): add optional serde feature for instruction/pile serialization
Adds serde Serialize/Deserialize derives (behind the `serde` feature flag) to Tableau, Foundation, KlondikePile, SkipCards, TableauStack, KlondikePileStack, DstFoundation, DstTableau, and KlondikeInstruction. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,9 +3,13 @@ name = "klondike"
|
||||
version = "0.3.0"
|
||||
edition = "2024"
|
||||
|
||||
[features]
|
||||
serde = ["dep:serde"]
|
||||
|
||||
[dependencies]
|
||||
card_game.workspace = true
|
||||
rand = { version = "0.10.1", default-features = false, features = ["std_rng"] }
|
||||
serde = { version = "1", optional = true, default-features = false, features = ["derive"] }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -121,6 +121,7 @@ impl KlondikeStats {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum Tableau {
|
||||
Tableau1,
|
||||
Tableau2,
|
||||
@@ -147,6 +148,7 @@ impl Tableau {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum Foundation {
|
||||
Foundation1,
|
||||
Foundation2,
|
||||
@@ -167,6 +169,7 @@ impl Foundation {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum KlondikePile {
|
||||
Tableau(Tableau),
|
||||
Stock,
|
||||
@@ -200,6 +203,7 @@ impl From<Foundation> for KlondikePile {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum SkipCards {
|
||||
Skip0,
|
||||
Skip1,
|
||||
@@ -238,6 +242,7 @@ impl SkipCards {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub struct TableauStack {
|
||||
pub tableau: Tableau,
|
||||
pub skip_cards: SkipCards,
|
||||
@@ -271,6 +276,7 @@ impl TableauStack {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum KlondikePileStack {
|
||||
Tableau(TableauStack),
|
||||
Stock,
|
||||
@@ -294,6 +300,7 @@ impl KlondikePileStack {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub struct DstFoundation {
|
||||
pub src: KlondikePile,
|
||||
pub foundation: Foundation,
|
||||
@@ -317,6 +324,7 @@ impl DstFoundation {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub struct DstTableau {
|
||||
pub src: KlondikePileStack,
|
||||
pub tableau: Tableau,
|
||||
@@ -340,6 +348,7 @@ impl DstTableau {
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub enum KlondikeInstruction {
|
||||
DstFoundation(DstFoundation),
|
||||
DstTableau(DstTableau),
|
||||
|
||||
Reference in New Issue
Block a user