Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Rust] std::iter::IntoIterator 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | use std::iter::{IntoIterator}; struct Foo(Vec<i32>); impl Foo { fn new() -> Foo { Foo(Vec::new()) } fn add(&mut self, item: i32) { self.0.push(item); } } impl IntoIterator for Foo { type Item = i32; type IntoIter = ::std::vec::IntoIter<i32>; fn into_iter(self) -> Self::IntoIter { self.0.into_iter() } } fn main() { let mut foo = Foo::new(); foo.add(1); foo.add(2); foo.add(3); for item in foo { println!("{} ", item); } } | cs |
1
2
3
이렇게 됩니다.
1 2 3 4 5 6 7 8 | impl<'a> IntoIterator for &'a Foo { type Item = &'a i32; type IntoIter = ::std::slice::Iter<'a, i32>; fn into_iter(self) -> Self::IntoIter { (&self.0).into_iter() } } | cs |
요것도 추가하면
1 2 3 | for item in &foo { println!("{} ", item); } | cs |
이렇게도 쓸 수 있습니다.
'개발 및 공부 > 언어' 카테고리의 다른 글
[Rust] std::borrow::Cow (0) | 2018.01.03 |
---|---|
[Rust] 연관된 타입(Associated Types) (0) | 2018.01.03 |
[Rust] 빌드 스크립트 (0) | 2018.01.02 |
[Rust] Youtube playlist를 mp3 파일들로 다운로드 (0) | 2018.01.02 |
[Rust] 문자의 아스키코드 출력 (0) | 2018.01.02 |
Comments