#![warn(clippy::copy_iterator)] | |
#[derive(Copy, Clone)] | |
struct Countdown(u8); | |
impl Iterator for Countdown { | |
type Item = u8; | |
fn next(&mut self) -> Option<u8> { | |
self.0.checked_sub(1).map(|c| { | |
self.0 = c; | |
c | |
}) | |
} | |
} | |
fn main() { | |
let my_iterator = Countdown(5); | |
let a: Vec<_> = my_iterator.take(1).collect(); | |
assert_eq!(a.len(), 1); | |
let b: Vec<_> = my_iterator.collect(); | |
assert_eq!(b.len(), 5); | |
} |