]> git.scottworley.com Git - pluta-lesnura/commitdiff
Deck
authorScott Worley <scottworley@scottworley.com>
Thu, 13 Jul 2023 19:20:27 +0000 (12:20 -0700)
committerScott Worley <scottworley@scottworley.com>
Fri, 14 Jul 2023 00:56:30 +0000 (17:56 -0700)
src/lib.rs

index a5148a0ac6ca147d22e4c699c0a5e9d4230d3caf..b7dc954b6d430de16bfc2f0ccccdd3e027f41c24 100644 (file)
@@ -1,10 +1,33 @@
 use rand::Rng;
 
 pub const NUM_RANKS: u8 = 13;
 use rand::Rng;
 
 pub const NUM_RANKS: u8 = 13;
+pub const NUM_SUITS: u8 = 4;
+pub const NUM_CARDS: u8 = NUM_RANKS * NUM_SUITS;
 
 #[derive(Clone, Copy, Eq, PartialEq)]
 pub struct Rank(u8);
 
 
 #[derive(Clone, Copy, Eq, PartialEq)]
 pub struct Rank(u8);
 
+#[derive(Clone, Copy, Eq, PartialEq)]
+pub struct Suit(u8);
+
+#[derive(Clone, Copy, Eq, PartialEq)]
+pub struct Card(u8);
+impl Card {
+    #[must_use]
+    pub fn rank(&self) -> Rank {
+        Rank(self.0 >> 2)
+    }
+    #[must_use]
+    pub fn suit(&self) -> Suit {
+        Suit(self.0 & 3)
+    }
+}
+
+#[must_use]
+pub fn deck() -> Vec<Card> {
+    (0..NUM_CARDS).map(Card).collect()
+}
+
 #[derive(Clone, Copy)]
 pub struct PathLength(Rank);
 
 #[derive(Clone, Copy)]
 pub struct PathLength(Rank);
 
@@ -61,4 +84,9 @@ mod tests {
         }
         assert!(pli.reveal_random(length).is_none());
     }
         }
         assert!(pli.reveal_random(length).is_none());
     }
+
+    #[test]
+    fn test_deck() {
+        let _d = deck();
+    }
 }
 }