我具有带有值向量的结构。我希望能够返回一些对值的可变引用:
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
}
}
我的想法:
Canvas
。 Canvas
不能调整大小,直到所有像素都超出范围。Canvas::img
中有许多写引用是安全的,因为它们彼此完全独立。我觉得我可以在这里使用Cell
或RefCell
,但我不知道如何使用。
如果我要的东西不可能,请解释原因。