我正在尝试编写一个将两个变量的函数转换为一个变量的函数值函数的函数。
当涉及的类型都很简单时,就没有问题了:
fn curry1(f: fn(i32, i32) -> i32) -> Box<Fn(i32) -> Box<Fn(i32) -> i32>> {
Box::new(move |x| Box::new(move |y| f(x, y)))
}
一旦我尝试使任何参数通用,就会遇到无法解决的生命周期问题:
fn curry2<Z>(f: fn(i32, i32) -> Z) -> Box<Fn(i32) -> Box<Fn(i32) -> Z>> {
Box::new(move |x| Box::new(move |y| f(x, y)))
}
the parameter type Z may not live long enough to satisfy its required lifetime bounds
如何正确描述和注释相关的生命周期?