具有幻影生命周期的结构有什么意义?

Ehs*_*ani 3 rust

我正在浏览一些库,我注意到使用了一个包含幻影生命周期字段的结构,比如

struct S<'a> {
    s: i32,
    _lifetime: PhantomData<&'a ()> // NOTE: there's no generic type here!
}
Run Code Online (Sandbox Code Playgroud)

我很想知道幻影生命周期的重要性——它提供了什么好处S,没有它就不可能或不方便处理?

She*_*ter 5

它与PhantomData用于泛型类型相同:即使编译器在结构定义中没有看到引用,也使结构表现得好像它包含一个引用。

您使用它的一个重要原因是在处理 FFI 类型时表示相关的生命周期,但在您希望生命周期提供保护但实际上没有参考资料的任何时候,它都很有用。

也可以看看: