diff --git a/src/codegen/keycode.rs b/src/codegen/keycode.rs index 103901ab..0e4c41ea 100644 --- a/src/codegen/keycode.rs +++ b/src/codegen/keycode.rs @@ -8,13 +8,18 @@ struct Key { } impl PartialOrd for Key { - fn lt (&self, other: &Key) -> bool { - if self.code < other.code { - true - } else { - false + fn partial_cmp(&self, other: &Key) -> Option { + match (!self.lt(other), !other.lt(self)) { + (false, false) => None, + (false, true) => Some(Less), + (true, false) => Some(Greater), + (true, true) => Some(Equal), } } + + fn lt (&self, other: &Key) -> bool { + self.code < other.code + } } impl PartialEq for Key { diff --git a/src/codegen/scancode.rs b/src/codegen/scancode.rs index f095db75..c603b27b 100644 --- a/src/codegen/scancode.rs +++ b/src/codegen/scancode.rs @@ -8,13 +8,18 @@ struct ScanCode { } impl PartialOrd for ScanCode { - fn lt (&self, other: &ScanCode) -> bool { - if self.code < other.code { - true - } else { - false + fn partial_cmp(&self, other: &ScanCode) -> Option { + match (!self.lt(other), !other.lt(self)) { + (false, false) => None, + (false, true) => Some(Less), + (true, false) => Some(Greater), + (true, true) => Some(Equal), } } + + fn lt (&self, other: &ScanCode) -> bool { + self.code < other.code + } } impl PartialEq for ScanCode {