如何描述返回泛型类型的currying函数的生存期?

时间:2018-08-30 22:56:22

标签: generics functional-programming rust lifetime currying

我正在尝试编写一个将两个变量的函数转换为一个变量的函数值函数的函数。

当涉及的类型都很简单时,就没有问题了:

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

如何正确描述和注释相关的生命周期?

0 个答案:

没有答案