Как я могу описать время жизни для функции карри, которая возвращает универсальные типы? - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь написать функцию, которая каррирует функцию двух переменных, в функцию-функцию с одной переменной.

Когда все используемые типы просты, проблем нет:

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

Как правильно описать и аннотировать соответствующие времена жизни?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...