Pin<Box<T>>在 Rust 中,和之间有功能差异吗Box<Pin<T>>?我认为他们应该表现得一样,但我不确定。
Cha*_*man 10
Pin<Box<T>>就是你想要的。Box<Pin<T>>根本行不通。
Pin要求其类型是某种类型的指针。Unpin然后,它通过要求unsafe可变地访问它来阻止您移出该指针(如果被指向者不是)。InPin<Box<T>> Box<T>是指针。它很常见,因为您可以安全地创建它(与没有宏的情况相反Pin<&mut T>只能不安全地创建),因为您将 的所有权赋予了它 Box,因此您无法T不通过Pin. Box<Pin<T>>另一方面,是无用的:如果T不实现,则不可能创建Deref(因为Pin的构造函数要求这样做,因为它们旨在与指针一起使用),即使T实现了,Box也是多余的:您已经有一个指针,没有必要把它包裹起来Box。此外,如果没有不安全的代码,则无法创建 if 的实例,Box<Pin<T>>并且with类型几乎没有什么好处(它可以传递给需要它的 API,例如,但在这种情况下,您不需要)。<T as Deref>::TargetUnpinPinUnpinFuture::poll()Box
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |