闭包作为函数返回值

回想到我们如何将特征对象作为函数的返回类型,这里的 FnOnce, FnMut, Fn 也都是特征,那么我们可以用相同的方法进行处理:

1
2
3
4
5
6
7
8
9
fn factory(x:i32) -> Box<dyn Fn(i32) -> i32> {
let num = 5;

if x > 1{
Box::new(move |x| x + num)
} else {
Box::new(move |x| x - num)
}
}