Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

입력 함수

클로저가 인자로 사용될 수 있으므로, 함수에 대해서도 똑같이 말할 수 있는지 궁금할 것입니다. 실제로 가능합니다! 클로저를 파라미터로 받는 함수를 선언하면, 해당 클로저의 트레이트 바운드를 만족하는 모든 함수를 파라미터로 전달할 수 있습니다.

// `Fn`으로 바운딩된 제네릭 `F` 인자를 받아
// 호출하는 함수를 정의합니다
fn call_me<F: Fn()>(f: F) {
    f();
}

// `Fn` 바운드를 만족하는 래퍼 함수를 정의합니다
fn function() {
    println!("저는 함수입니다!");
}

fn main() {
    // `Fn` 바운드를 만족하는 클로저를 정의합니다
    let closure = || println!("저는 클로저입니다!");

    call_me(closure);
    call_me(function);
}

추가로, Fn, FnMut, FnOnce 트레이트는 클로저가 주변 스코프에서 변수를 캡처하는 방식을 결정합니다.

참고:

Fn, FnMut, 그리고 FnOnce