Из обычной ссылки на атомарное значение можно получить изменяемую ссылку на него — без unsafe
01.07.2026У атомарных типов появились методы, позволяющие из изменяемой ссылки на обычное число получить изменяемую ссылку на атомарное. Раньше для этого требовалось приведение типов вручную.
Какая была проблема
Атомарный тип и обычное целое имеют одинаковое представление памяти — это их главное свойство, из которого следуют атомарные гарантии. Но преобразовать ссылку на одно в ссылку на другое средствами типов было нельзя.
Обходной путь был один: взять сырой указатель на значение, привести его к сырому указателю на атомарный тип, и из него получить ссылку. То есть каждая такая операция требовала блока небезопасного кода и ручного подтверждения, что выравнивание и размер совпадают.
Что добавили
Три метода: взять атомарное значение по ссылке, взять срез атомарных значений по срезу обычных и получить обратно обычный срез по срезу атомарных.
Доступны на платформах, где выравнивание атомарного типа совпадает с выравниванием обычного. Список таких платформ задаётся проверкой на этапе сборки — на остальных метод просто отсутствует, и код перестаёт собираться, а не работает неверно.
Практическая польза
Снимается целый класс блоков небезопасного кода в системном и параллельном программировании. В коде, который интенсивно работает с памятью, такие преобразования встречаются постоянно, и каждое из них требовало обоснования.
Оригинал
stabilize feature(atomic_from_mut)
Упоминаний: 1 · Просмотров: 5