クロージャを返す関数
クロージャを引数のパラメータとして用いることができるのと同様に、クロージャを戻り値として返すことも可能です。しかし無名のクロージャの型はその定義上、不明であるため、クロージャを返すためにはimpl Trait
を使用する必要があります。
クロージャを返すために有効なトレイトは下記の通りです。
Fn
FnMut
FnOnce
更に、move
というキーワードを使用し、全ての捕捉が値でおこなわれることを明示しなければなりません。
これは、関数を抜けると同時に参照による捕捉がドロップされ、無効な参照がクロージャに残ってしまうのを防ぐためです。
参照
Fn
, FnMut
, ジェネリクス, impl Trait.