関数を受け取る関数 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## 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 call_me<F: Fn()>(f: F) {
        f();
    }

    // `Fn`境界を満たすラッパ関数を定義。
    fn function() {
        println!("I'm a function!");
    }

    fn main() {
        // `Fn`境界を満たすクロージャを定義。
        let closure = || println!("I'm a closure!");

        call_me(closure);
        call_me(function);
    }

クロージャによる変数の捕捉がどのように行われているかを詳しく見たいときは`Fn`、`FnMut`、`FnOnce`を参照してください。

### 参照

`Fn`, `FnMut`, `FnOnce`