Clarify BTree range searching comments
This commit is contained in:
parent
d6eaea1c88
commit
922ccacc93
1 changed files with 3 additions and 1 deletions
|
@ -94,7 +94,7 @@ impl<BorrowType: marker::BorrowType, K, V> NodeRef<BorrowType, K, V, marker::Lea
|
|||
K: Borrow<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
|
||||
// an adversarial implementation could change between calls
|
||||
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 {
|
||||
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);
|
||||
// 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 {
|
||||
panic!("Ord is ill-defined in BTreeMap range")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue