【问题标题】:What is the significance of a struct with a phantom lifetime?具有幻像生命周期的结构有什么意义?
【发布时间】:2018-08-02 03:13:51
【问题描述】:

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

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

我很想知道幻影生命周期的意义——它为S 提供了哪些优势,没有它就不可能或不方便处理?

【问题讨论】:

    标签: rust


    【解决方案1】:

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

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

    另见:

    【讨论】:

    • 太棒了!谢谢你的解释。我需要查看链接。我猜 FFI 是在那个库中使用它的主要原因。我还更正了上面的注释。
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多