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