use partition_point instead of binary_search_by
Using `partition_point` ensures we always find the first entry. With binary search it is "random" (deterministic but implementation specific) which index is retruned if there are multiple equal elements. `partition_point` was added to the standard library to cover extactly the usecase here.
This commit is contained in:
parent
72b9311678
commit
7cf448eb5b
1 changed files with 1 additions and 4 deletions
|
@ -1,5 +1,4 @@
|
|||
use std::cell::Cell;
|
||||
use std::convert::identity;
|
||||
use std::ops::Range;
|
||||
use std::rc::Rc;
|
||||
|
||||
|
@ -113,9 +112,7 @@ impl<A, M> Layer<A, M> {
|
|||
pub fn reset_pos(&self, char_idx: usize, get_char_idx: impl Fn(&A) -> usize) {
|
||||
let new_index = self
|
||||
.annotations
|
||||
.binary_search_by_key(&char_idx, get_char_idx)
|
||||
.unwrap_or_else(identity);
|
||||
|
||||
.partition_point(|annot| get_char_idx(annot) < char_idx);
|
||||
self.current_index.set(new_index);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue