Iterators
Iterator
ํธ๋ ์์ ์ฌ๋ฌ๋ถ์ด ์ ์ํ ํ์
์์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค:
struct Fibonacci { curr: u32, next: u32, } impl Iterator for Fibonacci { type Item = u32; fn next(&mut self) -> Option<Self::Item> { let new_next = self.curr + self.next; self.curr = self.next; self.next = new_next; Some(self.curr) } } fn main() { let fib = Fibonacci { curr: 0, next: 1 }; for (i, n) in fib.enumerate().take(5) { println!("fib({i}): {n}"); } }
-
Iterator
ํธ๋ ์์ ์ปฌ๋ ์ ์ ๋ํ ์ฌ๋ฌ ์ผ๋ฐ์ ์ธ ํจ์ ํ๋ก๊ทธ๋๋ฐ ์์ (์:map
,filter
,reduce
๋ฑ)์ ๊ตฌํํฉ๋๋ค. ์ด๋ ๊ด๋ จ ๋ฌธ์๋ฅผ ๋ชจ๋ ์ฐพ์ ์ ์๋ ํธ๋ ์์ ๋๋ค. Rust์์๋ ์ด๋ฌํ ํจ์๊ฐ, ์ด์ ๋์ผํ ์ผ์ ํ๋ ๋ช ๋ นํ ๊ตฌํ๋งํผ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. -
IntoIterator
๋ ๋ฃจํ๋ฅผ ์๋ํ๊ฒ ๋ง๋๋ ํธ๋ ์์ ๋๋ค. ์ด๋Vec<T>
์ ๊ฐ์ ์ปฌ๋ ์ ์ ํ๊ณผ&Vec<T>
๋ฐ&[T]
์ ๊ฐ์ ์ด์ ๋ํ ์ฐธ์กฐ์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ๋ฒ์๋ ์ด๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด๋ฐ ์ด์ ๋กfor i in some_vec { .. }
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒกํฐ๋ฅผ ๋ฐ๋ณตํ ์ ์์ง๋งsome_vec.next()
๋ ์กด์ฌํ์ง ์์ต๋๋ค.