Unpin トレイト

  • Unpin 型は、Pin でラップされている場合でも、自由に移動できます
  • ほとんどの型は Unpin を実装します。これは “auto trait” だからです
  • auto trait の挙動は変更できます:
    • !Unpin 型は決して移動してはなりません
    • PhantomPinned フィールドを含む型は、デフォルトでは Unpin を実装しません

型が Unpin を実装している場合、Pin<Ptr> のピン留めの挙動は 発動しないことを説明してください。値は自由に移動できます。

ほとんどすべての型が Unpin を実装していることを説明してください。これは コンパイラによって自動的に実装されます。

Unpin を実装する型は、次のように言っていることになります: 「自己参照を持たないことを約束するので、 私を移動しても常に安全です。」

問い: どのような型が !Unpin になり得るでしょうか?

  • コンパイラ生成の futures
  • PhantomPinned フィールドを含む型
  • C++ オブジェクトをラップする一部の型

!Unpin 型は、いったんピン留めされると移動できません