【发布时间】:2018-08-02 03:13:51
【问题描述】:
我在浏览一些库时注意到使用了一个包含幻像生命周期字段的结构,例如
struct S<'a> {
s: i32,
_lifetime: PhantomData<&'a ()> // NOTE: there's no generic type here!
}
我很想知道幻影生命周期的意义——它为S 提供了哪些优势,没有它就不可能或不方便处理?
【问题讨论】:
标签: rust
我在浏览一些库时注意到使用了一个包含幻像生命周期字段的结构,例如
struct S<'a> {
s: i32,
_lifetime: PhantomData<&'a ()> // NOTE: there's no generic type here!
}
我很想知道幻影生命周期的意义——它为S 提供了哪些优势,没有它就不可能或不方便处理?
【问题讨论】:
标签: rust
这与将PhantomData 用于泛型类型相同:即使编译器在结构定义中没有看到引用,也使结构表现得好像它包含一个引用。
您使用它的一个重要原因是在处理 FFI 类型时表示相关的生命周期,但它在您希望生命周期提供的保护但实际上没有参考的任何时候都很有用。
另见:
【讨论】: