首页 > 解决方案 > 如何描述返回泛型类型的柯里化函数的生命周期?

问题描述

我正在尝试编写一个函数,将两个变量的函数库化为一个变量的函数值函数。

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

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

我怎样才能正确地描述和注释相关的生命周期?

标签: genericsfunctional-programmingrustlifetimecurrying

解决方案


推荐阅读