| //@ edition:2021 |
| //@ run-pass |
| |
| // Test that functional record update/struct update syntax works inside |
| // a closure when the feature `capture_disjoint_fields` is enabled. |
| |
| #[derive(Clone)] |
| struct S { |
| a: String, |
| b: String, |
| } |
| |
| struct T { |
| a: String, |
| s: S, |
| } |
| |
| fn main() { |
| let a = String::new(); |
| let b = String::new(); |
| let c = String::new(); |
| let s = S {a, b}; |
| let t = T { |
| a: c, |
| s: s.clone() |
| }; |
| |
| let c = || { |
| let s2 = S { |
| a: format!("New s2"), |
| ..s |
| }; |
| let s3 = S { |
| a: format!("New s3"), |
| ..t.s |
| }; |
| println!("{} {}", s2.a, s2.b); |
| println!("{} {} {}", s3.a, s3.b, t.a); |
| }; |
| |
| c(); |
| } |