Closed
Description
Apparently iter::Map
and iter::Filter
implement DoubleEndedIterator
. This could lead to unexpected behavior:
let counter = iter::repeat(()).map({
let mut ctr = 0;
move |_| {
ctr += 1;
ctr
}
});
let counter2 = counter.reverse(); // Doesn't reverse anything.
These adapters are only really reversible when passed closure is side-effect free. Unfortunately, we can't simply say that map
calls the passed closure on each element yielded because counter.last() != counter.reverse().next()
.
Metadata
Metadata
Assignees
Labels
No labels