1
Fork 0

Clarify BTree range searching comments

This commit is contained in:
dylni 2021-03-15 00:26:41 -04:00
parent d6eaea1c88
commit 922ccacc93

View file

@ -94,7 +94,7 @@ impl<BorrowType: marker::BorrowType, K, V> NodeRef<BorrowType, K, V, marker::Lea
K: Borrow<Q>, K: Borrow<Q>,
R: RangeBounds<Q>, R: RangeBounds<Q>,
{ {
// WARNING: Inlining these variables would be unsound (#81138) // It might be unsound to inline these variables if this logic changes (#81138).
// We assume the bounds reported by `range` remain the same, but // We assume the bounds reported by `range` remain the same, but
// an adversarial implementation could change between calls // an adversarial implementation could change between calls
let (start, end) = (range.start_bound(), range.end_bound()); let (start, end) = (range.start_bound(), range.end_bound());
@ -114,6 +114,8 @@ impl<BorrowType: marker::BorrowType, K, V> NodeRef<BorrowType, K, V, marker::Lea
loop { loop {
let (lower_edge_idx, lower_child_bound) = self.find_lower_bound_index(lower_bound); let (lower_edge_idx, lower_child_bound) = self.find_lower_bound_index(lower_bound);
let (upper_edge_idx, upper_child_bound) = self.find_upper_bound_index(upper_bound); let (upper_edge_idx, upper_child_bound) = self.find_upper_bound_index(upper_bound);
// SAFETY: This panic is used for safety, so external impls can't be called here. The
// comparison is done with integers for that reason.
if lower_edge_idx > upper_edge_idx { if lower_edge_idx > upper_edge_idx {
panic!("Ord is ill-defined in BTreeMap range") panic!("Ord is ill-defined in BTreeMap range")
} }