diff --git a/Cargo.lock b/Cargo.lock index 35dd1a9..c2b05c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -25,7 +25,6 @@ name = "card_game" version = "0.1.0" dependencies = [ "arrayvec", - "rand", ] [[package]] @@ -125,11 +124,20 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "klondike" +version = "0.1.0" +dependencies = [ + "card_game", + "rand", +] + [[package]] name = "klondike-cli" version = "0.1.0" dependencies = [ "card_game", + "klondike", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 046c6f2..6428a94 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ "card_game", + "klondike", "klondike-cli", ] resolver = "3" diff --git a/card_game/Cargo.toml b/card_game/Cargo.toml index 4ac9958..0c17349 100644 --- a/card_game/Cargo.toml +++ b/card_game/Cargo.toml @@ -10,4 +10,3 @@ keywords = ["card", "cards", "solitaire", "klondike"] [dependencies] arrayvec = "0.7.6" -rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] } diff --git a/card_game/src/lib.rs b/card_game/src/lib.rs index 0fd487b..30d0308 100644 --- a/card_game/src/lib.rs +++ b/card_game/src/lib.rs @@ -1,10 +1,5 @@ -pub mod card_game; -pub mod klondike; - -#[cfg(test)] -mod test; - -pub type Rng = rand::rngs::ThreadRng; +mod card_game; +pub use card_game::*; // // test readme // #[doc = include_str!("../README.md")] diff --git a/klondike-cli/Cargo.toml b/klondike-cli/Cargo.toml index eac80b9..b6f74d2 100644 --- a/klondike-cli/Cargo.toml +++ b/klondike-cli/Cargo.toml @@ -5,3 +5,4 @@ edition = "2024" [dependencies] card_game = { version = "0.1.0", path = "../card_game" } +klondike = { version = "0.1.0", path = "../klondike" } diff --git a/klondike-cli/src/main.rs b/klondike-cli/src/main.rs index a88f70b..ee73b27 100644 --- a/klondike-cli/src/main.rs +++ b/klondike-cli/src/main.rs @@ -1,5 +1,5 @@ -use card_game::card_game::{Card, Game, Pile, Session, Suit}; -use card_game::klondike::{ +use card_game::{Card, Game, Pile, Session, Suit}; +use klondike::{ DstFoundation, DstTableau, Foundation, Klondike, KlondikeInstruction, KlondikePile, KlondikePileStack, SkipCards, Tableau, TableauStack, }; diff --git a/klondike/Cargo.toml b/klondike/Cargo.toml new file mode 100644 index 0000000..b71a19b --- /dev/null +++ b/klondike/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "klondike" +version = "0.1.0" +edition = "2024" + +[dependencies] +card_game = { version = "0.1.0", path = "../card_game" } +rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] } diff --git a/card_game/README.md b/klondike/README.md similarity index 100% rename from card_game/README.md rename to klondike/README.md diff --git a/card_game/src/klondike.rs b/klondike/src/lib.rs similarity index 97% rename from card_game/src/klondike.rs rename to klondike/src/lib.rs index e2e0595..b123439 100644 --- a/card_game/src/klondike.rs +++ b/klondike/src/lib.rs @@ -1,5 +1,14 @@ -use crate::Rng; -use crate::card_game::{Card, CardValue, Game, Pile, Stack}; +pub type Rng = rand::rngs::ThreadRng; + +use card_game::{Card, CardValue, Game, Pile, Stack}; + +#[cfg(test)] +mod test; + +// test readme +#[doc = include_str!("../README.md")] +#[cfg(doctest)] +struct ReadmeDoctests; #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub struct KlondikeConfig {} @@ -480,8 +489,8 @@ impl Klondike { let mut deck = deck.into_iter(); // generate tableaus - fn pile(deck: &mut arrayvec::IntoIter) -> Pile { - let stack = arrayvec::ArrayVec::from_iter(deck.take(DN)).into(); + fn pile(deck: &mut as IntoIterator>::IntoIter) -> Pile { + let stack = Stack::from_iter(deck.take(DN)); let mut pile = Pile::new_face_down(stack); pile.push(deck.next().unwrap()); pile @@ -495,7 +504,7 @@ impl Klondike { let tableau7 = pile(&mut deck); // stock is remaining cards - let stock = Pile::new_face_down(arrayvec::ArrayVec::from_iter(deck).into()); + let stock = Pile::new_face_down(Stack::from_iter(deck)); let state = KlondikeState { stock, diff --git a/card_game/src/test.rs b/klondike/src/test.rs similarity index 91% rename from card_game/src/test.rs rename to klondike/src/test.rs index a7f02ec..be6b7bf 100644 --- a/card_game/src/test.rs +++ b/klondike/src/test.rs @@ -1,5 +1,5 @@ -use crate::card_game::{Game, Session}; -use crate::klondike::Klondike; +use crate::Klondike; +use card_game::{Game, Session}; #[test] fn test_is_winnable() { // is winnable