fix(card): add error handling of TryFrom<u32> for Card
authorMA Beaudet <ma@beaudet.xyz>
Mon, 8 Nov 2021 14:16:47 +0000 (15:16 +0100)
committerMA Beaudet <ma@beaudet.xyz>
Mon, 8 Nov 2021 14:16:47 +0000 (15:16 +0100)
src/card.rs

index 98423ec..709218a 100644 (file)
@@ -155,6 +155,15 @@ impl TryFrom<u32> for Card {
     type Error = MyError;
 
     fn try_from(value: u32) -> Result<Self, Self::Error> {
+        let _ = match (value >> 8) & 0xF {
+            0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => Ok(()),
+            _ => Err(MyError::InvalidRank),
+        };
+
+        let _ = match (value >> 12) & 0xF {
+            0b1000 | 0b0100 | 0b0010 | 0b0001 => Ok(()),
+            _ => Err(MyError::InvalidSuit),
+        };
         Ok(Self(value))
     }
 }