ピン留め
このコースのこのセグメントでは、次の内容を扱います。
- 「ピン留め」とは何か
- なぜそれが必要なのか
- Rust がそれをどのように実装しているか
- それが unsafe および FFI とどのように相互作用するか
概要
segment outline
“ピン留め、つまり値のメモリアドレスを固定された場所に保持することは、Rust におけるより難解な概念の 1 つです。”
“通常は async コード、すなわち poll(self: Pin<&mut Self>) の中でしか見かけませんが、ピン留めにはより広い適用範囲があります。”
自己参照構造体や intrusive データ構造など、unsafe キーワードなしでは 記述が難しい、あるいは不可能なデータ構造もあります。
C++ との FFI は、これに関連する代表的なユースケースです。Rust は、 参照を持つあらゆる C++ オブジェクトが自己参照データ構造である可能性を 想定しなければなりません。
“この衝突をより詳しく理解するには、まず Rust のムーブセマンティクスを しっかり理解していることを確認する必要があります。”