8.7.1 C++ 实现
01-C++ 实现 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/unsafe-deep-dive/pinning/self-referential-buffer.html
「自引用缓冲区(self-referential buffer)」是包含指向自身某个字段的引用的类型:
| |
这类结构在 Rust 中并不典型,因为当 SelfReferentialBuffer 的实例移动时,无法更新 cursor 的地址。
然而,在提供垃圾回收的其他语言中,以及允许用户在移动和拷贝时自定义行为的 C++ 中,这种写法更为自然。
本小节约需 1 小时 20 分钟。内容包括:
| 内容 | 时长 |
|---|---|
| 什么是 pinning | 5 分钟 |
| Pin | 5 分钟 |
PhantomPinned 标记类型 | 5 分钟 |
| 自引用缓冲区示例 | 50 分钟 |
Pin<Ptr> 与 Drop | 15 分钟 |