Есть время жизни 'a оно задано для ссылок, присланных в метод. У метода есть возвращаемое значение с тем же временем жизни. Все норм, ссылки на входе живут дольше метода и отдаются на выход. Если же создать в методе значение и вернуть ссылку на него (а там время жизни 'a у возвращаемого значения, которое из ссылок на входе) то компилер не допрет, что не надо сносить ссылку в конце работы метода, а снести ее когда 'a отживет, и выдаст компилер ошибку. Кажется компилер мог бы быть и поумнее.
@3draven то есть, если я внутри метода зачитал файлик размером в гиг, то этот гиг должен жить вечно (пока имя файла, переданное в метод, не отомрет)?
Интересный способ добиться OOM в последовательном коде, я думал, го придумали, чтобы суметь сделать это в параллельном коде, но так даже лучше.
Передача ссылок в методы — одна из причин, почему на расте ничего сложного толком не написать.