collect 정리collect는 Rust의 이터레이터(Iterator) 트레이트에서 제공되는 메서드 중 하나로, 이터레이터를 소비(consume)하여 원하는 컬렉션(Collection) 타입으로 변환하는 기능을 한다.
즉, 반복 가능한 값을 Vec, HashSet, HashMap, String 등으로 한 번에 모아줄 수 있다.
fn main() {
let nums = vec![1, 2, 3, 4];
// Iterator → Vec 변환
let doubled: Vec<i32> = nums.iter().map(|x| x * 2).collect();
println!("{:?}", doubled); // [2, 4, 6, 8]
}
.map(|x| x * 2) → 이터레이터 생성.collect::<Vec<i32>>() → Vec으로 변환타입 추론이 가능한 경우 collect()만 써도 된다. 하지만 대부분은 collect::<Vec<_>>()와 같이 **터보 피쉬(::<> 연산자)**를 사용해 타입을 지정해야 한다.
let a: Vec<i32> = (0..5).collect();
// [0, 1, 2, 3, 4]
let chars = vec!['R', 'u', 's', 't'];
let s: String = chars.into_iter().collect();
// "Rust"
use std::collections::HashSet;
let nums = vec![1, 2, 2, 3];
let set: HashSet<i32> = nums.into_iter().collect();
// {1, 2, 3}
use std::collections::HashMap;
let pairs = vec![("a", 1), ("b", 2)];
let map: HashMap<&str, i32> = pairs.into_iter().collect();
// {"a": 1, "b": 2}
collect는 이터레이터를 소비한다 → 한 번 사용하면 원본 이터레이터는 더 이상 사용 불가.Vec, String, HashSet, HashMap 등)collect 메서드로 다양한 타입으로 변환 가능.collect는 이터레이터를 컬렉션으로 변환하는 메서드.Vec, String, HashSet, HashMap.collect::<Vec<_>>() 형식으로 자주 사용.Rust 코드에서 데이터를 가공하고 모을 때 가장 많이 쓰이는 메서드 중 하나!