如何在向量中返回许多对不同值的可变引用?

时间:2019-05-12 12:11:27

标签: rust ownership borrowing

我具有带有值向量的结构。我希望能够返回一些对值的可变引用:

struct Canvas {
    img: Vec<u32>,
}

struct Pixel<'a> {
    value: &'a mut u32,
}

impl Canvas {
    fn borrow_two_pixels<'a>(&'a mut self) -> Vec<Pixel<'a>> {
        let mut res: Vec<Pixel<'a>> = Vec::with_capacity(2);
        res.push(&mut (self.img[0]));
        res.push(&mut (self.img[1])); // Of course, I can't.
        res
    }
}

我的想法:

  1. 每个人的寿命不得超过Canvas
  2. Canvas不能调整大小,直到所有像素都超出范围。
  3. Canvas::img中有许多写引用是安全的,因为它们彼此完全独立。

我觉得我可以在这里使用CellRefCell,但我不知道如何使用。 如果我要的东西不可能,请解释原因。

0 个答案:

没有答案