循环中有多个可变借位

时间:2018-09-22 19:52:54

标签: reference rust borrow-checker mutability

我有以下代码:

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成员的不可变引用)?

0 个答案:

没有答案