thread_local! теперь допускает сокращённые времена жизни без const-инициализатора
26.09.2026В макросе thread_local! разрешено опускать 'static в lifetimes и на всех платформах, а не только при const-инициализаторе. Раньше сокращение работало лишь в этом узком случае.
Как это устроено
Сокращение времён в Rust-функциях работает и для именованных временен, и для 'static во входных позициях. Чтобы распространить это на thread_local!, автор добавил упоминание 'static в аргумент сгенерированной макросом функции инициализации — тогда сокращённое время жизни в типе возврата по умолованию становится 'static.
Для этого используется PhantomData<&'static ()>, который, по словам автора, в релизной сборке должен компилироваться в ничто.
Изменение работает как с const-инициализатором, так и без него, на всех платформах. Автор — zachs18.
Оригинал
Allow elided ('static) lifetimes in thread_local!
Упоминаний: 1 · Просмотров: 3