如何在参考Vec上使用生命周期?

时间:2019-11-13 12:21:01

标签: 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 C {
    e: Vec<&E>,
}

struct E {}

我正在运行一个模拟并将单个结果存储在B中,然后仅拾取其中的一部分进行可视化,因此Vec中的C被编译,渲染和丢弃每一帧。

我的实际层次结构比这要复杂得多,但是我希望,如果我理解了这个问题,便可以扩大规模。

在这里如何设置生命周期?这甚至是惯用的Rust方式还是我应该重新组织实体?

1 个答案:

答案 0 :(得分:-1)

  

因此Vec中的C在每一帧都被编译,渲染和丢弃

如果您只需要临时使用结构C的实例,那么将它们存储为结构A的一部分并没有太大用处。

相反,我建议在get_c的{​​{1}}上添加一个A函数,该函数只是即时生成一个impl(或者,完全不使用和让该函数简单地返回一个C