ピン留め

このコースのこのセグメントでは、次の内容を扱います。

  • 「ピン留め」とは何か
  • なぜそれが必要なのか
  • Rust がそれをどのように実装しているか
  • それが unsafe および FFI とどのように相互作用するか

概要

segment outline

“ピン留め、つまり値のメモリアドレスを固定された場所に保持することは、Rust におけるより難解な概念の 1 つです。”

“通常は async コード、すなわち poll(self: Pin<&mut Self>) の中でしか見かけませんが、ピン留めにはより広い適用範囲があります。”

自己参照構造体や intrusive データ構造など、unsafe キーワードなしでは 記述が難しい、あるいは不可能なデータ構造もあります。

C++ との FFI は、これに関連する代表的なユースケースです。Rust は、 参照を持つあらゆる C++ オブジェクトが自己参照データ構造である可能性を 想定しなければなりません。

“この衝突をより詳しく理解するには、まず Rust のムーブセマンティクスを しっかり理解していることを確認する必要があります。”