| fn main() { |
| #[derive(Clone)] |
| struct X { |
| x: (), |
| } |
| let mut tup = (X { x: () }, X { x: () }); |
| match Some(tup.clone()) { |
| Some((y, ref z)) => {} |
| //~^ ERROR binding by-move and by-ref in the same pattern is unstable |
| None => panic!(), |
| } |
| |
| let (ref a, b) = tup.clone(); |
| //~^ ERROR binding by-move and by-ref in the same pattern is unstable |
| |
| let (a, mut b) = &tup; |
| //~^ ERROR binding by-move and by-ref in the same pattern is unstable |
| //~| ERROR cannot move out of a shared reference |
| |
| let (mut a, b) = &mut tup; |
| //~^ ERROR binding by-move and by-ref in the same pattern is unstable |
| //~| ERROR cannot move out of a mutable reference |
| } |