我试图在嵌套的层次结构中保存引用向量(不可以选择克隆),但是我很难把握生命周期。
我试图在这里总结我的代码:
struct A {
b: B,
c: C,
}
impl A {
fn add(&mut self) {
for i in self.b.d.iter() {
self.c.e.push(&i);
}
}
}
struct B {
d: Vec<E>,
}
struct C {
e: Vec<&E>,
}
struct E {}
我正在运行一个模拟并将单个结果存储在B
中,然后仅拾取其中的一部分进行可视化,因此Vec
中的C
被编译,渲染和丢弃每一帧。
我的实际层次结构比这要复杂得多,但是我希望,如果我理解了这个问题,便可以扩大规模。
在这里如何设置生命周期?这甚至是惯用的Rust方式还是我应该重新组织实体?
答案 0 :(得分:-1)
因此
Vec
中的C
在每一帧都被编译,渲染和丢弃
如果您只需要临时使用结构C
的实例,那么将它们存储为结构A
的一部分并没有太大用处。
相反,我建议在get_c
的{{1}}上添加一个A
函数,该函数只是即时生成一个impl
(或者,完全不使用和让该函数简单地返回一个C
)