8.2.6.1 Iterator::any
Iterator::any
는 전달받은 반복자 중에 어떤 요소가 조건을 만족하면 true
를 반환하는 함수이다. 그렇지 않으면 false
. 그 선언이다:
pub trait Iterator {
// 반복되는 타입.
type Item;
// `any`가 취하는 `&mut self`가 뜻하는 바는 호출자가 대여하거나
// 수정할 지도 모르지만, 소모하지는 않는다.
fn any<F>(&mut self, f: F) -> bool where
// `FnMut`은 모든 캡쳐된 변수를 대부분 수정하지만 소모하진 않는다.
// `Self::Item`
// `FnMut` meaning any captured variable may at most be
// modified, not consumed. `Self::Item` states it takes
// arguments to the closure by value.
F: FnMut(Self::Item) -> bool {}
}
fn main() { let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; // vec의 `iter() `는 `&i32`를 산출한다. `i32`로 역구조화 된다. println!("2 in vec1: {}", vec1.iter() .any(|&x| x == 2)); // vec의 `into_iter()`는 ` i32`를 산출한다. 역구조화가 필요치 않다. println!("2 in vec2: {}", vec2.into_iter().any(| x| x == 2)); let array1 = [1, 2, 3]; let array2 = [4, 5, 6]; // 배열의 `iter() `는 `&i32`를 산출한다. println!("2 in array1: {}", array1.iter() .any(|&x| x == 2)); // 배열의 `into_iter()`는 `&i32`를 산출한다. - 비일반적 println!("2 in array2: {}", array2.into_iter().any(|&x| x == 2)); }