Трейт Unpin
- Трейт
Unpinпозволяет типам свободно перемещаться, даже если они обёрнуты вPin - Большинство типов реализуют
Unpin, потому что это «auto trait» - Поведение
auto traitможно изменить:- Типы
!Unpinникогда не должны перемещаться - Типы с полем
PhantomPinnedпо умолчанию не реализуютUnpin
- Типы
Объясните, что если тип реализует Unpin, поведение pinning у Pin<Ptr> не применяется. Значение свободно перемещается.
Объясните, что почти все типы реализуют Unpin; это делает компилятор автоматически.
Типы, реализующие Unpin, как бы говорят: «Обещаю, что у меня нет самоссылок, поэтому перемещать меня всегда безопасно».
Спросите: какие типы могут быть !Unpin?
- Фьючерсы, сгенерированные компилятором
- Типы с полем
PhantomPinned - Некоторые типы, оборачивающие объекты C++
Типы !Unpin нельзя переместить после закрепления