我正在浏览一些库,我注意到使用了一个包含幻影生命周期字段的结构,比如
struct S<'a> {
s: i32,
_lifetime: PhantomData<&'a ()> // NOTE: there's no generic type here!
}
Run Code Online (Sandbox Code Playgroud)
我很想知道幻影生命周期的重要性——它提供了什么好处S
,没有它就不可能或不方便处理?
它与PhantomData
用于泛型类型相同:即使编译器在结构定义中没有看到引用,也使结构表现得好像它包含一个引用。
您使用它的一个重要原因是在处理 FFI 类型时表示相关的生命周期,但在您希望生命周期提供保护但实际上没有参考资料的任何时候,它都很有用。
也可以看看:
PhantomData
在 Nomicon 中。这讨论了使用PhantomData
. 归档时间: |
|
查看次数: |
961 次 |
最近记录: |