29 lines
464 B
Rust
29 lines
464 B
Rust
// edition:2021
|
|
|
|
// Test that when a borrow checker diagnostics are emitted, it's as precise
|
|
// as the capture by the closure.
|
|
|
|
#![allow(unused)]
|
|
|
|
struct Point {
|
|
x: i32,
|
|
y: i32,
|
|
}
|
|
struct Wrapper {
|
|
p: Point,
|
|
}
|
|
|
|
fn main() {
|
|
let mut w = Wrapper { p: Point { x: 10, y: 10 } };
|
|
|
|
let mut c = || {
|
|
w.p.x += 20;
|
|
};
|
|
|
|
let py = &mut w.p.x;
|
|
//~^ ERROR: cannot borrow `w.p.x` as mutable more than once at a time
|
|
c();
|
|
|
|
*py = 20
|
|
}
|