mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
VecDeque: binary_search_by(): return right away if hit found at back.first() #78021
This commit is contained in:
parent
60158f4a7c
commit
bccbf9db1c
@ -2481,8 +2481,11 @@ impl<T> VecDeque<T> {
|
|||||||
F: FnMut(&'a T) -> Ordering,
|
F: FnMut(&'a T) -> Ordering,
|
||||||
{
|
{
|
||||||
let (front, back) = self.as_slices();
|
let (front, back) = self.as_slices();
|
||||||
|
let cmp_back = back.first().map(|elem| f(elem));
|
||||||
|
|
||||||
if let Some(Ordering::Less | Ordering::Equal) = back.first().map(|elem| f(elem)) {
|
if let Some(Ordering::Equal) = cmp_back {
|
||||||
|
Ok(front.len())
|
||||||
|
} else if let Some(Ordering::Less) = cmp_back {
|
||||||
back.binary_search_by(f).map(|idx| idx + front.len()).map_err(|idx| idx + front.len())
|
back.binary_search_by(f).map(|idx| idx + front.len()).map_err(|idx| idx + front.len())
|
||||||
} else {
|
} else {
|
||||||
front.binary_search_by(f)
|
front.binary_search_by(f)
|
||||||
|
Loading…
Reference in New Issue
Block a user