Rustで関数を返す関数を作
何も変数をcaptureしていない場合
普通に使える
code:sample1.rs
fn f1() -> fn(i32) -> bool {
|i: i32| {
i == 2
}
}
fn main() {
let judge = f1();
for x in 1..10 {
println!("{}", judge(x));
}
}
変数を使っている場合
code:sample2.rs
fn f1() -> Box<dyn FnMut() -> i32> {
let mut counter = 0;
Box::new(move || {
counter+=1;
counter
})
}
fn main() {
let mut count = f1();
for _ in 1..10 {
println!("{}", count());
}
}