Skip to content

Commit 7ed0c54

Browse files
committed
Fixed bug
1 parent d086012 commit 7ed0c54

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/slice/group_by.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ fn find_index<T, F>(xs: &[T], pred: &F) -> Option<usize>
55
where
66
F: Fn(&T, &T) -> bool,
77
{
8-
let n = xs.len() / 2;
8+
let n = (xs.len() / 2).saturating_sub(1);
99

1010
for m in (1..((n / 2) + 1)).map(|x| 2 * x) {
1111
let start = n.saturating_sub(m);
1212
let end = std::cmp::min(n + m, xs.len());
13-
for i in start..(end - 1) {
14-
if !pred(&xs[i], &xs[i + 1]) {
15-
return Some(start + i);
16-
}
13+
let fsts = &xs[start..end];
14+
let (_, snds) = fsts.split_first()?;
15+
match fsts.iter().zip(snds).position(|(x , y)| !pred(x, y)) {
16+
None => (),
17+
Some(i) => return Some(start + i + 1),
1718
}
1819
}
1920
None

0 commit comments

Comments
 (0)