| // edition:2021 | |
| // run-pass | |
| // Test that we can immutably borrow field of an instance of a structure from within a closure, | |
| // while having a mutable borrow to another field of the same instance outside the closure. | |
| struct Point { | |
| x: i32, | |
| y: i32, | |
| } | |
| fn main() { | |
| let mut p = Point { x: 10, y: 10 }; | |
| let c = || { | |
| println!("{}", p.x); | |
| }; | |
| // `c` should only capture `p.x`, therefore mutating `p.y` is allowed. | |
| let py = &mut p.y; | |
| c(); | |
| *py = 20; | |
| } |