Появился трейт для типов, которые можно разделять как ссылку

24.05.2026

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

Зачем нужен ещё один трейт рядом с копированием

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

Счётчики ссылок это устранили: передача по умолчанию не увеличивает счётчик, и при передаче другому потоку он всё равно остаётся общим — то есть получается ровно то, что нужно.

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

Где применимо

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

Реализовано для ссылок, счётчиков ссылок и отправителей каналов — то есть ровно для тех типов, где разделять, а не копировать, и есть смысл.

Положение дел

Трейт пока экспериментальный. Это часть цели на 2026 год — сделать подсчёт ссылок удобным, чтобы не приходилось писать такое вручную в каждом своём типе.

Оригинал

add unstable Share trait

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