I find my new tail (#899) quite similar to k_smallest and its recent variants: we fuse the iterator, collect a limited number of items, than update the resulting slice with iter.for_each.
In tail, I consume the iterator (doing so can have wanted side effects) even when n = 0 while k_smallest and variants do not but merely drop it.
In tail, I have a special case for n = 1 while k_smallest and variants do not (it could use a possibly faster min[_by]).
I think we should update k_smallest and k_smallest_general accordingly.
I find my new
tail
(#899) quite similar tok_smallest
and its recent variants: we fuse the iterator, collect a limited number of items, than update the resulting slice withiter.for_each
.In
tail
, I consume the iterator (doing so can have wanted side effects) even whenn = 0
whilek_smallest
and variants do not but merely drop it. Intail
, I have a special case forn = 1
whilek_smallest
and variants do not (it could use a possibly fastermin[_by]
).I think we should update
k_smallest
andk_smallest_general
accordingly.Do you see other differences we should fix?