Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Трейт Unpin

  • Трейт Unpin позволяет типам свободно перемещаться, даже если они обёрнуты в Pin
  • Большинство типов реализуют Unpin, потому что это «auto trait»
  • Поведение auto trait можно изменить:
    • Типы !Unpin никогда не должны перемещаться
    • Типы с полем PhantomPinned по умолчанию не реализуют Unpin

Объясните, что если тип реализует Unpin, поведение pinning у Pin<Ptr> не применяется. Значение свободно перемещается.

Объясните, что почти все типы реализуют Unpin; это делает компилятор автоматически.

Типы, реализующие Unpin, как бы говорят: «Обещаю, что у меня нет самоссылок, поэтому перемещать меня всегда безопасно».

Спросите: какие типы могут быть !Unpin?

  • Фьючерсы, сгенерированные компилятором
  • Типы с полем PhantomPinned
  • Некоторые типы, оборачивающие объекты C++

Типы !Unpin нельзя переместить после закрепления