1.1 KiB
1.1 KiB
Hints
General
- Ranking a list of poker hands can be considered a sorting problem.
- Rust provides the sort method for
Vec<T> where T: Ord
. Ord
types form a total order: exactly one ofa < b
,a == b
, ora > b
must be true.- Poker hands do not conform to a total order: it is possible for two hands to be non-equal but have equal sort order. Example:
"3S 4S 5D 6H JH"
,"3H 4H 5C 6C JD"
. - Rust provides the
PartialOrd
trait to handle the case of sortable things which do not have a total order. However, it doesn't provide a standardsort
method forVec<T> where T: PartialOrd
. The standard idiom to sort a vector in this case isyour_vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::{Less|Equal|Greater}));
, depending on your needs. - You might consider implementing a type representing a poker hand which implements
PartialOrd
.