[Rust] 이터레이터-2

몇개만 더 다루겠다.

flatten
꽤 신박한 기능이다.
이터레이터의 멤버들을 하나로 합쳐서 평평하게(flat) 만들어주고, 그 이터레이터를 반환한다.

예를들어 2차원배열이 있다면, 안에 들어있는 1차원배열들을 연결해서 1차원배열을 만드는 것이다. image

image

image


flat_map
이건 멤버에 대해 map을 처리하고 나온 값에 flatten을 수행하는 것이다.
그냥 map(...).flatten()하는거랑 차이 없다. image

image

image


filter_map
이것도 참 기묘한 녀석이다.
조건에 맞는 요소들만 걸러낼 수 있게 도와준다.
근데 이건 클로저가 반드시 Option값을 통해 반환해야만 한다.
그럼 Option이 성공한 것들만 추려서 이터레이터를 만들어준다. image

image

image


enumerate
인덱스를 요소와 함께 튜플로 묶어주는 이터레이터를 만들어준다. image

image

image


peekable
일반적으로 이터레이터는 next로 다음 요소를 접근하면, 위치도 다음 요소로 이동돼버린다.

하지만 이걸 쓰면 peek 메서드로 이동 없이 값만 빼올수도 있는 이터레이터를 사용할 수 있다. image

image


all
조건식을 클로저로 받아서, 모든 요소가 부합하면 true를 반환한다. image

image

image


any
조건식을 받아서, 하나라도 부합하는게 있으면 true를 반환한다. image

image

image


그렇다.


참조
https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html