
103
1
장
타입
마지막으로 반복문에서 탐색했던 모든 항목을 새로운 컬렉션에 누적하는 메서드도 있다. 그중
에서 가장 중요한 메서드는
collect
()
로,
FromIterator
트레이트를 구현하는 모든 컬렉션
타입의 인스턴스를 새로 만드는 데 사용한다.
FromIterator
트레이트는
Vec
,
HashMap
,
BTreeSet
등과 같은 모든 표준 라이브러리 컬렉
션 타입에 대해 구현되어 있다. 그런데 이처럼 모든 곳에 구현돼 있는 만큼 타입을 명시해야 하
는 경우가 많다. 그러지 않으면 컴파일러로서는 (예를 들어 )
Vec
<
i32
>
와
HashSet
<
i32
>
중
에서 어느 것을 가리키는지 알 수 없기 때문이다.
use std::collections::HashSet;
// 짝수 컬렉션을 만든다. 이때 타입을 반드시 명시해야 한다.
// 두 타입 모두 표현식이 동일하기 때문이다.
let myvec: Vec<i32> = (0..10).into_iter().filter(|x| x % 2 == 0).collect();
let h: HashSet<i32> = (0..10).into_iter().filter(|x| x % 2 == 0).collect();
이 예제를 통해 범위 표현식을 이용해 반복 대상이 될 데이터의 초깃값을 생성하는 방법도 볼
수 있다.
이보다는 덜 알려져 ...