и это меня убивает, т.е. это вопрос жизни и смерти, типа... ментальной. 🤪
---> Предмет вопроса - тут. <---
Задача:
- функция example() принимает на вход функцию. Входящая функция может быть как кложурой, так и статической/нормальной fn()->().
- функция example() возвращает структуру Foo. Foo не содержит в себе входящую функцию. (это вообще ЗСТ)
- входящая функция должна жить столько же или дольше чем возвращаемый `Foo`.
Это я сделаль. Я не понимаю почему (см. пример по ссылке выше) test_should_ok__longer_living_closure - нормально собирается. Ведь кложура уходит во владение и там и дропается, а Foo возвращается и живёт дальше. Как?
Да, важно: Очень хочу обойтись без `'static`. См. пример test_should_ok__closure_drop_after.
Всё очень просто. Подставился такой входной лайфтайм, который решил проблему. Замыкание может жить сколько угодно, поэтому берётся 'foo в качестве ответа.
Спасибо за ответ! ❤️ То есть ты хочешь сказать что так кложура не дропнется по возврату функции example и будет жить `foo ? Как это так работает? Где почитать на тему "Замыкание может жить сколько угодно"? Ткни пальцем, пожалуйста.
Обсуждают сегодня