【发布时间】:2016-08-22 10:40:18
【问题描述】:
我想在一个对象被传递给另一个改变其状态的对象后以只读方式访问它。我知道在对象仍受借用控制时访问对象存在问题。
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借用。
我以前使用过块作用域,但我对这种方法并不满意。我希望你能给我一个更好的选择的提示!
【问题讨论】:
标签: rust move-semantics borrow-checker