You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While implementing DoubleEndedIterator for FilterMapOk i stumbled over the find_map in the Iterator's next implementation.
The most straight forward way to implement next_back would be to just inverse that, but rfind_back does not exist.
I've never sure where to stop for adding the reverse versions of things. Like rall and rany feel clearly superfluous, yet rposition is worth it because it's not just .rev().position.
This started me thinking "well why don't you want to write .rev().find_map?", where my guess is that the biggest reason is that rev takes self. So here's a stab at asking libs-api to let you write .as_rev().find_map instead, which would hopefully lessen the need to add more r versions of things: rust-lang/libs-team#385
Well, maybe a bit constructed, but rall and rany could make sense if you know elements are not evenly distributed and the iterator may short circuit earlier :P
Yeah, not saying that you'd never want to run them backwards, just that they seems unusual enough to not need a dedicated method on DoubleEndedIterator.
Activity
Philippe-Cholet commentedon May 27, 2024
I think the std lib dismissed the idea, probably not more efficient than the alternative. I don't know where to find the info though.
The only thing related I have is #818 (comment) where we had the same thought.
Is it really missing though?
Xenira commentedon May 27, 2024
Just struck me as odd, that there is
find_map
and norfind_map
. But guessrev()
works fine as well and keeps the trait concise.FilterMapOk
): implementDoubleEndedIterator
#950Iterator::as_rev
rust-lang/libs-team#385scottmcm commentedon May 27, 2024
I've never sure where to stop for adding the reverse versions of things. Like
rall
andrany
feel clearly superfluous, yetrposition
is worth it because it's not just.rev().position
.This started me thinking "well why don't you want to write
.rev().find_map
?", where my guess is that the biggest reason is thatrev
takesself
. So here's a stab at asking libs-api to let you write.as_rev().find_map
instead, which would hopefully lessen the need to add morer
versions of things: rust-lang/libs-team#385Xenira commentedon May 27, 2024
Well, maybe a bit constructed, but
rall
andrany
could make sense if you know elements are not evenly distributed and the iterator may short circuit earlier :Pscottmcm commentedon May 27, 2024
Yeah, not saying that you'd never want to run them backwards, just that they seems unusual enough to not need a dedicated method on
DoubleEndedIterator
.