| //@ edition:2021 | |
| // Test that borrow checker error is accurate and that min capture pass of the | |
| // closure analysis is working as expected. | |
| #[derive(Debug)] | |
| struct Point { | |
| x: i32, | |
| y: i32, | |
| } | |
| fn main() { | |
| let mut p = Point { x: 10, y: 20 }; | |
| // `p` is captured via mutable borrow. | |
| let mut c = || { | |
| p.x += 10; | |
| println!("{:?}", p); | |
| }; | |
| println!("{:?}", p); | |
| //~^ ERROR: cannot borrow `p` as immutable because it is also borrowed as mutable | |
| c(); | |
| } |