Появился трейт для типов, которые можно разделять как ссылку
24.05.2026В ядре появился трейт для типов, которые можно разделять так же, как ссылку: он требует реализации одного метода, возвращающего значение того же типа из ссылки на себя.
Зачем нужен ещё один трейт рядом с копированием
Обычное копирование запрещено для типов, у которых дорого получать независимая копия. Именно поэтому счётчики ссылок, атомарные типы и файловые дескрипторы приходится передавать вручную, по явному вызову метода.
Счётчики ссылок это устранили: передача по умолчанию не увеличивает счётчик, и при передаче другому потоку он всё равно остаётся общим — то есть получается ровно то, что нужно.
Новый трейт выражает это правило в типах: если тип его реализует, его можно разделять без вызова вручную.
Где применимо
Трейт требует именно недорогого копирования — потому что результат должен быть эквивалентен исходному. То есть он не подходит для обычных данных, где нужна настоящая независимая копия.
Реализовано для ссылок, счётчиков ссылок и отправителей каналов — то есть ровно для тех типов, где разделять, а не копировать, и есть смысл.
Положение дел
Трейт пока экспериментальный. Это часть цели на 2026 год — сделать подсчёт ссылок удобным, чтобы не приходилось писать такое вручную в каждом своём типе.
Оригинал
add unstable Share trait
Упоминаний: 1 · Просмотров: 2