Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reference 如何在引用的Vec上使用生命周期?_Reference_Rust_Lifetime - Fatal编程技术网

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
被编译、渲染并丢弃每一帧

如果您只需要暂时使用struct
C
的实例,那么将它们存储为struct
a
的一部分并没有多大用处


相反,我建议在
a
impl
中添加一个
get_c
函数,它可以动态地生成
c
(或者,完全不使用,让该函数只返回
Vec

您的问题非常广泛。你没有说你遇到了什么问题,但是你没有给出你真正想要做什么的背景,所以很难提供一个替代的解决方案。我怀疑架构标签是否适合这个问题。此外,如果结构包含引用成员,则需要指定引用。你通读了吗?你可能在寻找答案吗?如果是这样,我们可以标记它,但如果不是,我认为它不负责任。不过,您所描述的体系结构没有问题。如果你有代码,但你不确定它是最好的解决方案,那就去问吧(先阅读规则,期望不同)。我很抱歉,因为我太宽泛了,所以我试着对我的问题做一个简单的说明,而不是听起来像我想咬的东西超过我能咀嚼的,这很明显。我面临的问题是,向Vec添加引用会导致编译器抱怨我得到的生命周期——我不能保证当引用被使用时,对象仍然存在。由于这是跨多个结构发生的,我真的不知道如何设置这些保证,但我想我还有很多东西要学习。谢谢大家的帮助,我真的很感激!我想这并不能直接回答问题,但这是我解决(回避)原始问题的方向,所以我接受它作为答案。