Reference 如何在引用的Vec上使用生命周期?
我试图在嵌套的层次结构中保存一个引用向量(克隆不是一个选项),但是我很难把握生命周期 我试图在这里总结我的代码:Reference 如何在引用的Vec上使用生命周期?,reference,rust,lifetime,Reference,Rust,Lifetime,我试图在嵌套的层次结构中保存一个引用向量(克隆不是一个选项),但是我很难把握生命周期 我试图在这里总结我的代码: 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 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 {}
结构A{
b:b,
c:c,
}
暗示{
fn添加(&M自我){
对于我自己,b.d.iter(){
自我c.e.推送(&i);
}
}
}
结构B{
d:Vec,
}
结构C{
e:Vec,
}
结构E{}
我正在运行一个模拟,并将单个结果存储在B
中,然后只提取其中的一个子集进行可视化,因此C
中的Vec
将被编译、渲染并丢弃每一帧
我的实际层次结构比这更复杂,但我希望,如果我了解这个问题,我将能够扩大它
我如何在这里设置生命周期?这是一种惯用的生锈方式还是我应该重新组织我的实体
因此,C
中的Vec
被编译、渲染并丢弃每一帧
如果您只需要暂时使用structC
的实例,那么将它们存储为structa
的一部分并没有多大用处
相反,我建议在
a
的impl
中添加一个get_c
函数,它可以动态地生成c
(或者,完全不使用,让该函数只返回Vec
)您的问题非常广泛。你没有说你遇到了什么问题,但是你没有给出你真正想要做什么的背景,所以很难提供一个替代的解决方案。我怀疑架构标签是否适合这个问题。此外,如果结构包含引用成员,则需要指定引用。你通读了吗?你可能在寻找答案吗?如果是这样,我们可以标记它,但如果不是,我认为它不负责任。不过,您所描述的体系结构没有问题。如果你有代码,但你不确定它是最好的解决方案,那就去问吧(先阅读规则,期望不同)。我很抱歉,因为我太宽泛了,所以我试着对我的问题做一个简单的说明,而不是听起来像我想咬的东西超过我能咀嚼的,这很明显。我面临的问题是,向Vec添加引用会导致编译器抱怨我得到的生命周期——我不能保证当引用被使用时,对象仍然存在。由于这是跨多个结构发生的,我真的不知道如何设置这些保证,但我想我还有很多东西要学习。谢谢大家的帮助,我真的很感激!我想这并不能直接回答问题,但这是我解决(回避)原始问题的方向,所以我接受它作为答案。