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));
}

See also:

std::iter::Iterator::any

results matching ""

    No results matching ""