diff --git a/src/klondike.rs b/src/klondike.rs index 2148f78..87ee6ac 100644 --- a/src/klondike.rs +++ b/src/klondike.rs @@ -52,6 +52,12 @@ pub struct KlondikeInstruction { pub dst: KlondikePileId, } impl KlondikeInstruction { + pub fn stock() -> Self { + Self { + src: KlondikePileId::Stock, + dst: KlondikePileId::Stock, + } + } fn next(self) -> Option { let KlondikeInstruction { src, dst } = self; if let Some(next_dst) = dst.next() { diff --git a/src/main.rs b/src/main.rs index c4002bc..2340bca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -122,6 +122,7 @@ enum SessionInstruction { New, Undo, Hint, + Stock, Klondike(KlondikeInstruction), } impl core::str::FromStr for SessionInstruction { @@ -131,6 +132,7 @@ impl core::str::FromStr for SessionInstruction { "NEW" | "new" => Self::New, "UNDO" | "undo" => Self::Undo, "HINT" | "hint" => Self::Hint, + "s" => Self::Stock, other => { let Parsed(ki) = other.parse()?; Self::Klondike(ki) @@ -162,6 +164,7 @@ fn main() -> Result<(), std::io::Error> { println!("{instruction:?}"); } } + SessionInstruction::Stock => session.process_instruction(KlondikeInstruction::stock()), SessionInstruction::Klondike(instruction) => { if session.is_instruction_valid(instruction) { session.process_instruction(instruction);