modes:*: Implement Hand::high_card on consumers.
This commit is contained in:
@@ -46,6 +46,10 @@ impl Hand for Pair {
|
||||
!self.0.is_joker()
|
||||
}
|
||||
|
||||
fn high_card(&self) -> Card {
|
||||
self.1
|
||||
}
|
||||
|
||||
fn footstool(&self, b: &Self) -> Footstool {
|
||||
match self.cmp(b) {
|
||||
// There is no footstool if self is beaten by other.
|
||||
@@ -57,8 +61,10 @@ impl Hand for Pair {
|
||||
Ordering::Greater => {
|
||||
// By construction, Pair::1 is always a playing card so we may
|
||||
// safely unwrap here.
|
||||
let s1 = Single::new(self.1).unwrap();
|
||||
let s2 = Single::new(b.1).unwrap();
|
||||
let [s1, s2] = [self, b]
|
||||
.map(Hand::high_card)
|
||||
.map(Single::new)
|
||||
.map(Option::unwrap);
|
||||
match s1.footstool(&s2) {
|
||||
Footstool::Full => Footstool::Half,
|
||||
_ => Footstool::None,
|
||||
|
||||
@@ -22,6 +22,11 @@ impl Hand for Single {
|
||||
true
|
||||
}
|
||||
|
||||
fn high_card(&self) -> Card {
|
||||
// I am the high card???
|
||||
self.0
|
||||
}
|
||||
|
||||
fn footstool(&self, other: &Self) -> Footstool {
|
||||
// We use deck_abs() to get an index in the overall deck ordering.
|
||||
match (self.0.deck_abs(), other.0.deck_abs()) {
|
||||
|
||||
@@ -24,7 +24,7 @@ impl Triple {
|
||||
}
|
||||
}
|
||||
|
||||
fn high_pair(&self) -> Pair {
|
||||
pub fn high_pair(&self) -> Pair {
|
||||
Pair::new(self.1, self.2).unwrap()
|
||||
}
|
||||
|
||||
@@ -71,6 +71,10 @@ impl Hand for Triple {
|
||||
self.count_jokers() == 0
|
||||
}
|
||||
|
||||
fn high_card(&self) -> Card {
|
||||
self.2
|
||||
}
|
||||
|
||||
fn footstool(&self, other: &Self) -> Footstool {
|
||||
match self.cmp(other) {
|
||||
// There is no footstool if self is beaten by other.
|
||||
|
||||
Reference in New Issue
Block a user