벡터와 같은 Iterator trait가 구현된 것들에는 요소들을 반복하고 처리할 때 사용할 수 있는 여러 가지 반복자 메서드가 있습니다.
iter()
, iter_mut()
, into_iter()
는 각각 불변 참조, 가변 참조, 소유권 이동을 수행하는 반복자를 생성합니다.
iter()
메서드는 벡터의 각 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다.
이 반복자는 벡터의 요소를 읽기 전용으로 사용할 때 유용합니다.
let vec = vec![1, 2, 3, 4, 5];
for element in vec.iter() {
println!("요소: {}", element);
}
iter_mut()
메서드는 벡터의 각 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다.
이 반복자는 벡터의 요소를 수정할 때 유용합니다.
let mut vec = vec![1, 2, 3, 4, 5];
for element in vec.iter_mut() {
*element *= 2; // 각 요소에 2를 곱함
}
println!("변경된 벡터: {:?}", vec);
into_iter()
메서드는 벡터의 각 요소의 소유권을 이동하는 반복자를 반환합니다.
이 반복자는 벡터의 요소를 소유권을 이동시키며 처리할 때 유용합니다.
이를 통해 벡터의 요소를 다른 데이터 구조로 쉽게 옮길 수 있습니다.
let vec = vec!["a".to_string(), "b".to_string(), "c".to_string()];
let mut uppercased_vec: Vec<String> = Vec::new();
for element in vec.into_iter() {
uppercased_vec.push(element.to_uppercase());
}
println!("대문자로 변경된 벡터: {:?}", uppercased_vec);
into_iter()
를 사용할 때 원래의 벡터는 더 이상 사용할 수 없습니다.
소유권이 이동되어 원래 벡터에 대한 참조가 무효화되기 때문입니다.
iter()
: 벡터의 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다. 요소를 읽기 전용으로 사용할 때 사용됩니다.iter_mut()
: 벡터의 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다. 요소를 수정할 때 사용됩니다.into_iter()
: 벡터의 요소의 소유권을 이동하는 반복자를 반환합니다. 요소를 소유권을 이동시키며 처리할 때 사용됩니다.이러한 반복자들은 각각 다양한 상황에 따라 벡터를 처리할 수 있습니다.