8.2.6.2 Iterator::find

Iterator::find는 전달되는 반복자 중에 조건을 만족하는 첫 요소를 Option으로 반환한다. 그 선언이다:

pub trait Iterator {
    // 반복되는 형식.
    type Item;

    // `find`는`& mut self '를 취하며 그 의미는 호출자가 대여하거나 
    // 수정될 수는 있어도 소비되지 않는다.
    fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
        // `FnMut`의 의미는 모든 캡쳐된 변수가 대부분 수정될 수 있고 
        // 소비되지는 않는다. 
        // '&Self::Item`은 클로져에 대한 인수를 참조로 받습니다.
        P: FnMut(&Self::Item) -> bool {}
}
fn main() {
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];

    // vec의 `iter()    `는 `&i32`를 산출.
    let mut iter = vec1.iter();
    // vec의 `into_iter()`는 `i32`를 산출.
    let mut into_iter = vec2.into_iter();

    // 생성되는 참조는 `&&i32`이다. `i32`로 역구조화 된다.
    println!("Find 2 in vec1: {:?}", iter     .find(|&&x| x == 2));
    // 생성되는 참조는 ` &i32`이다. `i32`로 역구조화 된다.
    println!("Find 2 in vec2: {:?}", into_iter.find(| &x| x == 2));

    let array1 = [1, 2, 3];
    let array2 = [4, 5, 6];

    // 배열의 `iter()     `는 `&i32`를 생성.
    println!("Find 2 in array1: {:?}", array1.iter()     .find(|&&x| x == 2));
    // 배열의 `into_iter()`는 `&i32`를 생성. - 비일반적.
    println!("Find 2 in array2: {:?}", array2.into_iter().find(|&&x| x == 2));
}

See also:

std::iter::Iterator::find

results matching ""

    No results matching ""