mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
24 lines
459 B
Rust
24 lines
459 B
Rust
|
#![warn(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);
|
||
|
}
|