| //@ run-pass | |
| #![allow(unused_assignments)] | |
| #![allow(unused_variables)] | |
| #![allow(non_shorthand_field_patterns)] | |
| pub fn main() { | |
| struct Foo { x: isize, y: isize } | |
| let mut f = Foo { x: 10, y: 0 }; | |
| match f { | |
| Foo { ref mut x, .. } => *x = 11, | |
| } | |
| match f { | |
| Foo { ref x, ref y } => { | |
| assert_eq!(f.x, 11); | |
| assert_eq!(f.y, 0); | |
| } | |
| } | |
| match f { | |
| Foo { mut x, y: ref mut y } => { | |
| x = 12; | |
| *y = 1; | |
| } | |
| } | |
| assert_eq!(f.x, 11); | |
| assert_eq!(f.y, 1); | |
| } |