Skip to content

Commit 651602b

Browse files
k_smallest variants with FnMut functions
I totally missed this in my review earlier. We usually allow `FnMut` functions rather than only `Fn` ones.
1 parent 5eb29cf commit 651602b

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/k_smallest.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ where
8787
}
8888

8989
#[inline]
90-
pub(crate) fn key_to_cmp<T, K, F>(key: F) -> impl Fn(&T, &T) -> Ordering
90+
pub(crate) fn key_to_cmp<T, K, F>(mut key: F) -> impl FnMut(&T, &T) -> Ordering
9191
where
92-
F: Fn(&T) -> K,
92+
F: FnMut(&T) -> K,
9393
K: Ord,
9494
{
9595
move |a, b| key(a).cmp(&key(b))

src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3006,7 +3006,7 @@ pub trait Itertools: Iterator {
30063006
fn k_smallest_by<F>(self, k: usize, cmp: F) -> VecIntoIter<Self::Item>
30073007
where
30083008
Self: Sized,
3009-
F: Fn(&Self::Item, &Self::Item) -> Ordering,
3009+
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
30103010
{
30113011
k_smallest::k_smallest_general(self, k, cmp).into_iter()
30123012
}
@@ -3038,7 +3038,7 @@ pub trait Itertools: Iterator {
30383038
fn k_smallest_by_key<F, K>(self, k: usize, key: F) -> VecIntoIter<Self::Item>
30393039
where
30403040
Self: Sized,
3041-
F: Fn(&Self::Item) -> K,
3041+
F: FnMut(&Self::Item) -> K,
30423042
K: Ord,
30433043
{
30443044
self.k_smallest_by(k, k_smallest::key_to_cmp(key))
@@ -3096,10 +3096,10 @@ pub trait Itertools: Iterator {
30963096
/// itertools::assert_equal(five_largest, vec![13, 6, 12, 5, 11]);
30973097
/// ```
30983098
#[cfg(feature = "use_alloc")]
3099-
fn k_largest_by<F>(self, k: usize, cmp: F) -> VecIntoIter<Self::Item>
3099+
fn k_largest_by<F>(self, k: usize, mut cmp: F) -> VecIntoIter<Self::Item>
31003100
where
31013101
Self: Sized,
3102-
F: Fn(&Self::Item, &Self::Item) -> Ordering,
3102+
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
31033103
{
31043104
self.k_smallest_by(k, move |a, b| cmp(b, a))
31053105
}
@@ -3128,7 +3128,7 @@ pub trait Itertools: Iterator {
31283128
fn k_largest_by_key<F, K>(self, k: usize, key: F) -> VecIntoIter<Self::Item>
31293129
where
31303130
Self: Sized,
3131-
F: Fn(&Self::Item) -> K,
3131+
F: FnMut(&Self::Item) -> K,
31323132
K: Ord,
31333133
{
31343134
self.k_largest_by(k, k_smallest::key_to_cmp(key))

0 commit comments

Comments
 (0)