Примечание: этот вопрос был задан до первой стабильной версии Rust. С тех пор было много изменений, и синтаксис, используемый в функции, даже больше не действителен. Тем не менее, ответ Shepmaster превосходен и делает этот вопрос достойным внимания.
Наконец приземлились закрытые крышки, поэтому я экспериментирую с ними, чтобы увидеть, что вы можете сделать.
У меня есть эта простая функция:
fn make_adder(a: int, b: int) -> || -> int {
|| a + b
}
Тем не менее я получаю missing lifetime specifier [E0106]
об ошибке missing lifetime specifier [E0106]
. Я попытался исправить это, изменив тип возвращаемого значения на ||: 'static → int
, но затем я получил еще одну ошибку, cannot infer an appropriate lifetime due to conflicting requirements
Если я правильно понимаю, закрытие распаковано, поэтому он владеет a
и b
. Мне кажется очень странным, что это нужно на всю жизнь. Как я могу это исправить?