@@ 1,8 1,11 @@
pub trait BetterThanOperator<T> {
fn better_than(self: &Self, a: &T, b: &T) -> bool;
+ fn equal(self: &Self, a: &T, b: &T) -> bool;
fn ordering(&self, a: &T, b: &T) -> std::cmp::Ordering {
- if self.better_than(a, b) {
+ if self.equal(a, b) {
+ std::cmp::Ordering::Equal
+ } else if self.better_than(a, b) {
std::cmp::Ordering::Less
} else {
std::cmp::Ordering::Greater
@@ 23,6 26,10 @@ impl<T> BetterThanOperator<T> for MinimizingOperator
fn better_than(self: &Self, a: &T, b: &T) -> bool {
a < b
}
+
+ fn equal(self: &Self, a: &T, b: &T) -> bool {
+ *a == *b
+ }
}
pub struct MaximizingOperator;
@@ 38,4 45,8 @@ impl<T> BetterThanOperator<T> for MaximizingOperator
fn better_than(self: &Self, a: &T, b: &T) -> bool {
a > b
}
+
+ fn equal(self: &Self, a: &T, b: &T) -> bool {
+ *a == *b
+ }
}