rust - 不清楚如何为枚举类型添加命名生命周期参数
问题描述
两个半链接的问题。
struct ComputeNode<'a, T: Debug + 'static> {
value: T,
downstream: Vec<&'a Node<T>>,
}
enum Node<T: Debug + 'static> {
Input(InputNode<T>),
Compute(ComputeNode<T>), //<---
} ~~~
- 在这里,编译器抱怨说
missing lifetime specifier
expected named lifetime parameterrustc(E0106)
lib.rs(54, 25): expected named lifetime parameter
而且我不确定如何在 ComputeNode 定义中为 T 添加生命周期?
- 另外,我找不到一种方法来使代码理解我希望 T 在其中的任何引用都具有与拥有节点的生命周期相关联的生命周期(这里不是所有者,而是在不同的地方)。我最终把它变成了“静态的”:(
解决方案
这两个问题的答案是:与您对 的方法相同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>),
}
推荐阅读
- python - 为什么我的 tkinter 标签上的文件夹中的所有图像都没有显示在画布上的框架内?
- matrix - 如何将 not 运算符应用于 Julia 中的所有矩阵元素?
- ffmpeg - 有没有办法在ffmpeg中应用曲线弯曲?
- java - Java if 语句作业
- javascript - 结合异步操作、promise.then() 和递归 setTimeout,同时避免“延迟反模式”
- firebase - 如何在一个“onUpdate”云函数中加载 2 个不同的 Firestore 文档?
- sql - 无论顺序如何,都选择具有相同集合的行
- javascript - 对象数组中的子字符串
- c# - C# 使用泛型调用被覆盖的方法
- javascript - 如何在 Fabric.js 中获取当前视图的中心坐标?