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

Input functions

Оскільки замикання можуть використовуватися як аргументи, ви можете замислитися, чи те саме можна сказати про функції. І справді, можна! Якщо ви оголосите функцію, яка приймає замикання як параметр, тоді будь-яка функція, що задовольняє обмеження трейтів цього замикання, може бути передана як параметр.

// Define a function which takes a generic `F` argument
// bounded by `Fn`, and calls it
fn call_me<F: Fn()>(f: F) {
    f();
}

// Define a wrapper function satisfying the `Fn` bound
fn function() {
    println!("I'm a function!");
}

fn main() {
    // Define a closure satisfying the `Fn` bound
    let closure = || println!("I'm a closure!");

    call_me(closure);
    call_me(function);
}

Як додаткове зауваження, Fn, FnMut, і FnOnce traits визначають, як замикання захоплює змінні з навколишньої області видимості.

See also:

Fn, FnMut, and FnOnce