@@ -5,7 +5,7 @@ use itertools::Itertools;
55
66use crate :: card:: Card ;
77
8- #[ derive( PartialEq , Eq , Copy , Clone , Debug , Ord ) ]
8+ #[ derive( PartialEq , Eq , Copy , Clone , Debug ) ]
99pub enum CardPlay {
1010 Single ( Card ) ,
1111 Pair ( Card , Card ) ,
@@ -28,22 +28,15 @@ impl Display for CardPlay {
2828
2929impl PartialOrd for CardPlay {
3030 fn partial_cmp ( & self , other : & Self ) -> Option < Ordering > {
31- if std:: mem:: discriminant ( self ) != std:: mem:: discriminant ( other) {
32- return None ;
33- }
34- let our_card = match self {
35- CardPlay :: Single ( card) => card,
36- CardPlay :: Pair ( card, _) => card,
37- CardPlay :: Triple ( card, _, _) => card,
38- CardPlay :: Quad ( card, _, _, _) => card,
39- } ;
40- let their_card = match other {
41- CardPlay :: Single ( card) => card,
42- CardPlay :: Pair ( card, _) => card,
43- CardPlay :: Triple ( card, _, _) => card,
44- CardPlay :: Quad ( card, _, _, _) => card,
45- } ;
46- our_card. partial_cmp ( their_card)
31+ Some ( self . cmp ( other) )
32+ }
33+ }
34+
35+ impl Ord for CardPlay {
36+ fn cmp ( & self , other : & Self ) -> Ordering {
37+ self . size ( )
38+ . cmp ( & other. size ( ) )
39+ . then_with ( || self . value ( ) . cmp ( & other. value ( ) ) )
4740 }
4841}
4942
0 commit comments