関数の引数としてクロージャーを渡せるのと同様に関数も引数として渡すことができます。
以下がサンプルのコードですが、ここではクロージャー(sqr)と関数(sqr_f)とそれらの引数も同時に関数(apply_clo())に渡しています。
当然トレイト境界と引数がクロージャーと同じ関数(ここではFn(i32))でないと渡せませんが、
fn apply_clo<F: Fn(i32)>(i: i32, f: F) {
f(i);
}
fn main() {
// ARG for the closure
let sqr = |y: i32| println!("{}", y*y);
// equivalent function
fn sqr_f(y: i32){
println!("{}", y*y);
}
apply_clo(23, sqr);
apply_clo(32, sqr_f);
}
admin