我有以下代码:
struct Other<'a> {
pub data: &'a u32,
}
struct Object<'a> {
pub data: u32,
pub other: Vec<Other<'a>>,
}
impl<'a> Object<'a> {
fn new(data: u32) -> Object<'a> {
Object { data: data, other: Vec::new() }
}
fn add(&'a mut self) {
self.other.push(Other::<'a>{ data: &self.data });
}
}
fn func() {
let mut object = Object::new(0x0ABCDEAF);
loop {
object.add(); // <-- error
}
}
我需要连续调用add
方法,但是就我对Rust的理解而言,我不能可变地多次借用object
。
我试图为该问题找到解决方案,但我什么都没想。
所以我的问题是:我该如何正确执行这段代码本质上想做的事情(也就是说,推入一个向量,该向量由一个结构拥有,其他几个结构实例包含对拥有的structs成员的不可变引用)?