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

我试图在嵌套的层次结构中保存引用向量(不可以选择克隆),但是我很难把握生命周期。

我试图在这里总结我的代码:

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方式还是我应该重新组织实体?

tanquanxin99 回答:如何在参考Vec上使用生命周期?

  

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

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

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

本文链接:https://www.f2er.com/3110171.html

大家都在问