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.
Do you see other differences we should fix?
I find my new
tail(#899) quite similar tok_smallestand 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 = 0whilek_smallestand variants do not but merely drop it.In
tail, I have a special case forn = 1whilek_smallestand variants do not (it could use a possibly fastermin[_by]).I think we should update
k_smallestandk_smallest_generalaccordingly.Do you see other differences we should fix?