0
我想在一個對象被傳遞給改變其狀態的另一個對象後以只讀方式訪問對象。我知道訪問一個對象的時候仍然存在一個問題,那就是當它仍然受到借用的控制時。如何在不引入新範圍的情況下結束對象的借用?
extern crate renderay_rs;
use renderay_rs::*;
fn draw_canvas(canvas: &Canvas) {
let max_height = canvas.height;
let max_width = canvas.width;
for iterator_y in 0..max_height {
for iterator_x in 0..max_width {
print!("{}", canvas.array[iterator_y * iterator_x]);
}
print!("\n");
}
}
fn main() {
let point = Point { x: 5, y: 5 };
let mut canvas = Canvas {
width: 10,
height: 10,
array: vec!['o'; 10*10],
};
let mut renderer = CanvasRenderer::new(&mut canvas);
renderer.render_point('A', point);
draw_canvas(canvas);
}
我覺得我應該在renderer.render_point(..., ...)
方法後結束借款。有沒有辦法做到這一點?該對象無需藉助該對象或狀態更改後的CanvasRenderer
。
我以前使用過塊範圍,但我對這種方法並不滿意。我希望你能給我一個更好的選擇的提示!
謝謝你,但正如我所說我使用塊範圍之前,但對這種方法並不滿意 - 是否真的沒有其他方法可以做到這一點? – xetra11
我已經添加了一種功能的方式。你不喜歡什麼東西? – mcarton
我認爲答案很好:畢竟,塊模仿代碼的運行時間。儘管迂迴,使用函數只是另一種引入新範圍/塊的方法^ _ ^。 – Shepmaster