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"
|
version = "0.3.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
serde = ["dep:serde"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
card_game.workspace = true
|
card_game.workspace = true
|
||||||
rand = { version = "0.10.1", default-features = false, features = ["std_rng"] }
|
rand = { version = "0.10.1", default-features = false, features = ["std_rng"] }
|
||||||
|
serde = { version = "1", optional = true, default-features = false, features = ["derive"] }
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
workspace = true
|
workspace = true
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ impl KlondikeStats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum Tableau {
|
pub enum Tableau {
|
||||||
Tableau1,
|
Tableau1,
|
||||||
Tableau2,
|
Tableau2,
|
||||||
@@ -147,6 +148,7 @@ impl Tableau {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum Foundation {
|
pub enum Foundation {
|
||||||
Foundation1,
|
Foundation1,
|
||||||
Foundation2,
|
Foundation2,
|
||||||
@@ -167,6 +169,7 @@ impl Foundation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum KlondikePile {
|
pub enum KlondikePile {
|
||||||
Tableau(Tableau),
|
Tableau(Tableau),
|
||||||
Stock,
|
Stock,
|
||||||
@@ -200,6 +203,7 @@ impl From<Foundation> for KlondikePile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum SkipCards {
|
pub enum SkipCards {
|
||||||
Skip0,
|
Skip0,
|
||||||
Skip1,
|
Skip1,
|
||||||
@@ -238,6 +242,7 @@ impl SkipCards {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub struct TableauStack {
|
pub struct TableauStack {
|
||||||
pub tableau: Tableau,
|
pub tableau: Tableau,
|
||||||
pub skip_cards: SkipCards,
|
pub skip_cards: SkipCards,
|
||||||
@@ -271,6 +276,7 @@ impl TableauStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum KlondikePileStack {
|
pub enum KlondikePileStack {
|
||||||
Tableau(TableauStack),
|
Tableau(TableauStack),
|
||||||
Stock,
|
Stock,
|
||||||
@@ -294,6 +300,7 @@ impl KlondikePileStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub struct DstFoundation {
|
pub struct DstFoundation {
|
||||||
pub src: KlondikePile,
|
pub src: KlondikePile,
|
||||||
pub foundation: Foundation,
|
pub foundation: Foundation,
|
||||||
@@ -317,6 +324,7 @@ impl DstFoundation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub struct DstTableau {
|
pub struct DstTableau {
|
||||||
pub src: KlondikePileStack,
|
pub src: KlondikePileStack,
|
||||||
pub tableau: Tableau,
|
pub tableau: Tableau,
|
||||||
@@ -340,6 +348,7 @@ impl DstTableau {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
pub enum KlondikeInstruction {
|
pub enum KlondikeInstruction {
|
||||||
DstFoundation(DstFoundation),
|
DstFoundation(DstFoundation),
|
||||||
DstTableau(DstTableau),
|
DstTableau(DstTableau),
|
||||||
|
|||||||
Reference in New Issue
Block a user