Из обычной ссылки на атомарное значение можно получить изменяемую ссылку на него — без unsafe

01.07.2026

У атомарных типов появились методы, позволяющие из изменяемой ссылки на обычное число получить изменяемую ссылку на атомарное. Раньше для этого требовалось приведение типов вручную.

Какая была проблема

Атомарный тип и обычное целое имеют одинаковое представление памяти — это их главное свойство, из которого следуют атомарные гарантии. Но преобразовать ссылку на одно в ссылку на другое средствами типов было нельзя.

Обходной путь был один: взять сырой указатель на значение, привести его к сырому указателю на атомарный тип, и из него получить ссылку. То есть каждая такая операция требовала блока небезопасного кода и ручного подтверждения, что выравнивание и размер совпадают.

Что добавили

Три метода: взять атомарное значение по ссылке, взять срез атомарных значений по срезу обычных и получить обратно обычный срез по срезу атомарных.

Доступны на платформах, где выравнивание атомарного типа совпадает с выравниванием обычного. Список таких платформ задаётся проверкой на этапе сборки — на остальных метод просто отсутствует, и код перестаёт собираться, а не работает неверно.

Практическая польза

Снимается целый класс блоков небезопасного кода в системном и параллельном программировании. В коде, который интенсивно работает с памятью, такие преобразования встречаются постоянно, и каждое из них требовало обоснования.

Оригинал

stabilize feature(atomic_from_mut)

Упоминаний: 1 · Просмотров: 5