Iterator adapter without side-effects, possible better performance
```
use std::sync::atomic::{AtomicU32, Ordering::*};
use pure_iter::PureIterExt;
let mut a = AtomicU32::new(0);
let mut b = AtomicU32::new(0);
assert_eq!(a.load(Acquire), 3);
assert_eq!(b.load(Acquire), 1);
```