about summary refs log tree commit diff
path: root/src/liballoc/collections/btree/node.rs
diff options
context:
space:
mode:
authorStein Somers <git@steinsomers.be>2020-01-23 07:48:09 +0100
committerStein Somers <git@steinsomers.be>2020-02-07 02:41:28 +0100
commitae03e16d083d6d3cc9ad98ecb06e2f6cc2f5df68 (patch)
treefb09d3826b0c4f6bbb1f62c5689e0c1e0c8ed861 /src/liballoc/collections/btree/node.rs
parentbe051adb57f1ff28edf997c3379aed2934bff104 (diff)
downloadrust-ae03e16d083d6d3cc9ad98ecb06e2f6cc2f5df68.tar.gz
rust-ae03e16d083d6d3cc9ad98ecb06e2f6cc2f5df68.zip
Lift range_search up one level of abstraction
Diffstat (limited to 'src/liballoc/collections/btree/node.rs')
-rw-r--r--src/liballoc/collections/btree/node.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/liballoc/collections/btree/node.rs b/src/liballoc/collections/btree/node.rs
index e4123c9a20b..abf926186e8 100644
--- a/src/liballoc/collections/btree/node.rs
+++ b/src/liballoc/collections/btree/node.rs
@@ -31,6 +31,7 @@
 // - A node of length `n` has `n` keys, `n` values, and (in an internal node) `n + 1` edges.
 //   This implies that even an empty internal node has at least one edge.
 
+use core::cmp::Ordering;
 use core::marker::PhantomData;
 use core::mem::{self, MaybeUninit};
 use core::ptr::{self, NonNull, Unique};
@@ -832,6 +833,14 @@ impl<BorrowType, K, V, NodeType, HandleType> PartialEq
     }
 }
 
+impl<BorrowType, K, V, NodeType, HandleType> PartialOrd
+    for Handle<NodeRef<BorrowType, K, V, NodeType>, HandleType>
+{
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        if self.node.node == other.node.node { Some(self.idx.cmp(&other.idx)) } else { None }
+    }
+}
+
 impl<BorrowType, K, V, NodeType, HandleType>
     Handle<NodeRef<BorrowType, K, V, NodeType>, HandleType>
 {