Trait ForwardIterExt

Source
pub trait ForwardIterExt: Iterator + Sized {
    // Provided method
    fn forward(self) -> ForwardIter<Self>  { ... }
}
Expand description

Ensure that side effects in iterators always run forward

Provided Methods§

Source

fn forward(self) -> ForwardIter<Self>

Ensure that side effects in iterators always run forward

Space complexity

§Examples

Fail case:

let mut i = 0;
let x: Vec<_> = (0..4).map(|_| { i += 1; i }).rev().collect();
assert_eq!(x, [4, 3, 2, 1]); // fail!

Rewrite to:

let mut i = 0;
let x: Vec<_> = (0..4).map(|_| { i += 1; i }).forward().rev().collect();
assert_eq!(x, [4, 3, 2, 1]); // success!

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§