Closed
Description
class example {
let mut x: int;
new() {
self.x = 1;
}
drop {}
}
fn main(_args: [str]) {
let x: example = example();
let _z = fn@() {
let _a: int = x.x;
};
x.x = 5;
}
noncopyable-field.rs:13:18: 13:19 error: copying a noncopyable value
noncopyable-field.rs:13 let _a: int = x.x;
^
Notably, it seems to be trying to copy the example object, not the int (as I first assumed), at least if you trust the error location marker.
So the question is, why does accessing a field of the object try to copy it?
This particular repro goes away if you remove the write to x.x after the closure is created, but I have another, larger one where the write isn't there and it still does it.