首页 > 解决方案 > 不清楚如何为枚举类型添加命名生命周期参数

问题描述

两个半链接的问题。

struct ComputeNode<'a, T: Debug + 'static> {
    value: T,
    downstream: Vec<&'a Node<T>>,
}

enum Node<T: Debug + 'static> {
    Input(InputNode<T>),
    Compute(ComputeNode<T>), //<---
}                      ~~~
  1. 在这里,编译器抱怨说
missing lifetime specifier
expected named lifetime parameterrustc(E0106)
lib.rs(54, 25): expected named lifetime parameter

而且我不确定如何在 ComputeNode 定义中为 T 添加生命周期?

  1. 另外,我找不到一种方法来使代码理解我希望 T 在其中的任何引用都具有与拥有节点的生命周期相关联的生命周期(这里不是所有者,而是在不同的地方)。我最终把它变成了“静态的”:(

标签: rust

解决方案


这两个问题的答案是:与您对 的方法相同ComputeNode,向 中添加生命周期参数Node

struct ComputeNode<'a, T: Debug + 'static> {
    value: T,
    downstream: Vec<&'a Node<'a, T>>,
}

enum Node<'a, T: Debug + 'static> {
    Input(InputNode<T>),
    Compute(ComputeNode<'a, T>),
} 

推荐阅读