gpt4 book ai didi

rust - 如何在没有循环依赖的情况下指定 Rust 中完全包含的结构的生命周期

转载 作者:行者123 更新时间:2023-11-29 08:30:51 26 4
gpt4 key购买 nike

我正在尝试创建一个包含其他结构列表的结构(如果有帮助,可以是固定大小)

struct Container<'m> {
contained: Vec<&'m Contained>,
}

struct Contained {
id: u64,
}

impl Container<'_> {

pub fn new<'m>() -> Container<'m> {
Container {
contained: Vec::new()
}
}

pub fn new_contained<'m>(&mut self, id: u64) {
let c = Contained {
id
};
self.contained.push(&c);
^^ lifetime of Contained ends here
}
}

我可以看到 Contained 的生命周期结束,但我看不到如何创建具有给定生命周期的结构。

我是否有任何替代方案?我尝试使用固定大小的数组而不是 Vec 这样容器拥有数组的内容,但我无法创建一个零大小的数组开始。

最佳答案

回答我自己的问题,似乎 Box 做了我想要的

struct Container {
contained: Box<Option<Contained>>
}

struct Contained {
id: u64,
}

impl Container {

pub fn new() -> Container {
Container {
contained: Box::new(None),
}
}

pub fn new_contained(&mut self, id: u64) {
let c= Contained {
id
};
self.contained = Box::new(Some(c));
}
}

Contained 似乎与 Container 的生命周期相同。

关于rust - 如何在没有循环依赖的情况下指定 Rust 中完全包含的结构的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com