-use std::fmt::{self, Display, Formatter};
+use std::fmt::{self, Debug, Display, Formatter};
+
+use itertools;
use self::Rank::*;
use self::Suit::*;
}
}
-#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Hash)]
+#[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
pub struct CardSet {
repr: u64,
}
+impl Debug for CardSet {
+ fn fmt(&self, fmt: &mut Formatter<'_>) -> fmt::Result {
+ fmt.debug_struct("CardSet")
+ .field("repr", &format_args!("{:#015x} /*{}*/", self.repr, itertools::join(*self, ", ")))
+ .finish()
+ }
+}
+
impl CardSet {
pub fn new() -> CardSet {
CardSet { repr: 0 }
}
pub fn fifty_two_card_deck() -> CardSet {
- CardSet { repr: 0b1111111111111_1111111111111_1111111111111_1111111111111 }
+ CardSet { repr: 0xfffffffffffff }
}
pub fn is_empty(&self) -> bool {